【发布时间】:2011-11-13 21:42:23
【问题描述】:
我想知道除了验证用户代理和猜测之外,是否有任何方法可以确定发出 HTTP 请求的浏览器是否支持 SNI。
我会考虑服务器端或客户端选项。
我想做的是为指向同一个 PHP 应用程序的多个域设置 SSL 证书。然后我会尝试找出发出请求的客户端是否支持 SNI,如果支持,则将他重定向到启用 SSL 的版本。
【问题讨论】:
标签: php javascript ssl sni
我想知道除了验证用户代理和猜测之外,是否有任何方法可以确定发出 HTTP 请求的浏览器是否支持 SNI。
我会考虑服务器端或客户端选项。
我想做的是为指向同一个 PHP 应用程序的多个域设置 SSL 证书。然后我会尝试找出发出请求的客户端是否支持 SNI,如果支持,则将他重定向到启用 SSL 的版本。
【问题讨论】:
标签: php javascript ssl sni
首先,我们知道目前支持 SNI 的浏览器:
歌剧 8.0; MSIE 7.0(但仅适用于 Windows Vista 或更高版本); Firefox 2.0 和其他使用 Mozilla Platform rv:1.8.1 的浏览器; Safari 3.2.1(Windows 版本支持 Vista 或更高版本的 SNI); Chrome(Windows 版本也支持 Vista 或更高版本的 SNI)。
所以一种便宜的方法是确定浏览器,如果它是上述之一,它就有 SNI。
虽然这不是最佳实践(优先于特征检测),但似乎没有办法避免它,因为 SNI 检测需要 SSL 握手。因此,在您的 SSL 证书失败后做某事为时已晚。
【讨论】: