Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Javascript 检测浏览器TLS兼容性_Javascript_Ssl_Browser_Detect - Fatal编程技术网

Javascript 检测浏览器TLS兼容性

Javascript 检测浏览器TLS兼容性,javascript,ssl,browser,detect,Javascript,Ssl,Browser,Detect,我们有一个SSL网站,其中主机最近禁用了较旧的SSL协议,如TLS 1.0及以下版本。根据浏览器的不同,如果网站访问者使用的浏览器至少不支持TLS 1.1,则他们在访问网站时会收到一个空白页面或一条隐藏的错误消息 我希望创建一个不在SSL端口上的登录页,如果它支持TLS 1.1和更高版本,我可以在那里检测浏览器功能。如果没有,那么我想向他们显示一条友好消息,以升级他们的浏览器或使用其他浏览器 这是使用客户端javascript库可以实现的吗?如果是,那么我应该使用什么 谢谢。您可以使用提供的 在

我们有一个SSL网站,其中主机最近禁用了较旧的SSL协议,如TLS 1.0及以下版本。根据浏览器的不同,如果网站访问者使用的浏览器至少不支持TLS 1.1,则他们在访问网站时会收到一个空白页面或一条隐藏的错误消息

我希望创建一个不在SSL端口上的登录页,如果它支持TLS 1.1和更高版本,我可以在那里检测浏览器功能。如果没有,那么我想向他们显示一条友好消息,以升级他们的浏览器或使用其他浏览器

这是使用客户端javascript库可以实现的吗?如果是,那么我应该使用什么

谢谢。

您可以使用提供的

在下面的示例中,我检查了
tls\u版本
。检查给定的密码套件也可能是一个好主意


window.parseTLSinfo=函数(数据){
var version=data.tls_version.split(“”);
console.log(
版本[0]!=“TLS”|版本[1]<1.2
“太糟糕了!您的浏览器只支持“+data.tls_version+”。请升级到支持tls 1.2的浏览器。”
:'一切正常。您的浏览器支持'+data.tls_version+'。'
);
控制台日志(数据);
};

至少有两个网站将为您检查浏览器功能,包括SSL实验室()和HowsMySSL()。HowsMySSL还有一个很好的API,可以很容易地从JavaScript中检查。

事实上,您无法检查TLS版本。我必须从一个只支持TLS1.2(与我的页面相反)的站点加载脚本。使用简单HTML脚本标记不会给您任何未加载脚本的线索。因此,我最终使用以下脚本从不同的域加载JS:


如果TLS出现问题,jqxhr.status将为404,因此您可以向用户显示消息。

小注释;撇开代码不谈,我认为人们应该意识到,如果您向最终用户显示了与此相关的错误消息,那么您应该了解TLS版本不仅仅是浏览器限制,本质上是操作系统级别的限制。您必须在计算机上启用它,并且浏览器必须支持它。您可以使用最新的chrome浏览器,但如果在Internet设置(在Windows上)中禁用了它,您仍然会遇到TLS协商问题。

以下是一种方法 使用jQuery创建一个图像,并添加一个src属性,我使用PayPal的一个按钮,现在所有对PayPal的请求都必须通过TSL1.2 希望这能奏效

jQuery('<img />').on({
    load: function() {
      console.log("support TSL1.2");
    },
    error: function() {
      console.log('no support TSL1.2');
    }
}).attr('src','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif');

jQuery('我不认为你可以用JS直接检测到它,但是你可以尝试使用ajax将不同的页面连接到使用不同协议的服务器上。那么,你如何告知老浏览器用户他们的浏览器不再受站点支持?这很简单:只需在文档中插入一些html,或者生成一些
警报
,或者其他什么像那样。困难的部分是检测TLS支持。这就是我要问的。如何检测TLS版本支持。这正是我要找的!非常感谢!令人遗憾的是,它不是一个js库,我可以在本地下载。我不知道他为我们保留API有多长时间。@Aamir“我的SSL怎么样?”是开源软件,可在上找到。如果在客户端浏览器上完全禁用TLS,您将如何调用此API?它使用安全连接,因此如果禁用TLS,则不会发送启动回调的请求。@Oriol如果您在Windows 7上运行IE 8,则默认情况下将禁用TLS 1.1和1.2。是,MS选择默认情况下禁用它…只是为了让你知道,MSYSSL是如何开始收费订阅的。+1-实际上显示了所有可以协商的TLS版本,这就是我所寻找的。很好的技巧,谢谢。没有外部库,我们可以询问自己的服务器,而不是询问一个外部服务器,以了解浏览器是否允许访问在服务器中ss it需要TLS version.Down投票,用于用框架回答JavaScript问题。
jQuery('<img />').on({
    load: function() {
      console.log("support TSL1.2");
    },
    error: function() {
      console.log('no support TSL1.2');
    }
}).attr('src','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif');