Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测浏览器';s SNI支持_Php_Javascript_Ssl_Sni - Fatal编程技术网

Php 检测浏览器';s SNI支持

Php 检测浏览器';s SNI支持,php,javascript,ssl,sni,Php,Javascript,Ssl,Sni,我想知道除了验证用户代理和猜测之外,是否还有其他方法可以确定发出HTTP请求的浏览器是否支持SNI 我会考虑服务器或客户端选项。 我想做的是为指向同一PHP应用程序的多个域设置SSL证书。然后,我会尝试找出发出请求的客户端是否支持SNI,如果支持,则将其重定向到启用SSL的版本。首先,我们知道当前支持SNI的浏览器: 歌剧8.0; MSIE 7.0(但仅适用于Windows Vista或更高版本); Firefox2.0和其他使用Mozilla平台rv的浏览器:1.8.1; Safari 3.2

我想知道除了验证用户代理和猜测之外,是否还有其他方法可以确定发出HTTP请求的浏览器是否支持SNI

我会考虑服务器或客户端选项。


我想做的是为指向同一PHP应用程序的多个域设置SSL证书。然后,我会尝试找出发出请求的客户端是否支持SNI,如果支持,则将其重定向到启用SSL的版本。

首先,我们知道当前支持SNI的浏览器:

歌剧8.0; MSIE 7.0(但仅适用于Windows Vista或更高版本); Firefox2.0和其他使用Mozilla平台rv的浏览器:1.8.1; Safari 3.2.1(Windows版本支持Vista或更高版本上的SNI); Chrome(Windows版本也支持Vista或更高版本的SNI)

因此,一个便宜的方法是确定浏览器,如果它是上述之一,它有SNI

虽然这不是最佳实践(优先于功能检测),但似乎无法避免,因为SNI检测需要SSL握手。因此,在SSL证书失败后再做一些事情已经太迟了