当前位置:  开发笔记 > 编程语言 > 正文

使用JavaScript检测HTTPS

如何解决《使用JavaScript检测HTTPS》经验,为你挑选了5个好方法。

我试图找到如果我在HTTP或HTTPS环境中如何使用JavaScript检测.

我正在调用一个Ajax请求,所以如果我在HTTPS中并调用HTTP Ajax,那么我会得到一个302 Moved Temporarily.

我正在考虑获取当前window.location.href并进行字符串操作.

使用JavaScript检测HTTPS的最佳方法是什么?



1> 小智..:

看看谷歌分析如何将他们的脚本添加到页面:

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';

然后document.location.protocol对所有浏览器都是安全的.



2> Pekka suppor..:

你可以使用非标准

window.location.protocol 

在Firefox中:MDC文档

在IE中,它似乎是

 document.location.protocol

MSDN文档

我找不到关于其在其他浏览器上的行为方式的可靠信息,但我希望它们符合准标准document.location.protocol.

也许jQuery url插件可以对此进行排序,而不必处理跨浏览器的差异 - 我自己从未使用它,但看起来很有希望:

jQuery.url.attr("protocol");



3> Ryan Fernand..:

location.protocol 适用于所有浏览器.


哎哟!谢谢你让我回到现实:)

4> Vic Seedoubl..:

这个怎么样 ?

 var protocol = window.location.href.indexOf("https://")==0?"https":"http";



5> jberculo..:

在许多情况下,人们可以完全省略协议.所以,而不是


一个人可以用


然后浏览器自动添加当前协议.这也适用于在头部包含文件,它也适用于ajax调用.

编辑:这样做现在被认为是反模式:

现在,每个人都鼓励使用SSL,并且没有性能问题,这种技术现在已成为一种反模式.如果您需要的资产在SSL上可用,则始终使用https:// asset.

允许通过HTTP请求代码段打开了攻击的大门,就像最近的Github Man-on-side攻击一样.即使您的站点在HTTP上,请求HTTPS资产也始终是安全的,但反之则不然.

请参阅:http://www.paulirish.com/2010/the-protocol-relative-url/


我遇到的一个警告是,在将代码部署到移动设备后(如果您使用的是Cordova或PhoneGap),此答案将无效.在那个siutation //将解析为file://所以你永远不能将它用于http调用.如果您不是为移动开发,请忽略这一点.
推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有