如何在客户端使用 JavaScript 来检测页面是否已加密?

IT技术 javascript http https
2021-02-25 16:41:21

是否可以在客户端检测到用户是否正在使用加密页面?

换句话说——我想知道当前页面的 URL 是以 http 还是 https 开头的。

3个回答

使用window.location.protocol来检查它是否https:

function isSecure()
{
   return window.location.protocol == 'https:';
}

或者,如果您没有本地范围的位置,则可以省略指定“窗口”。

function isSecure()
{
   return location.protocol == 'https:';
}
应尽可能使用此方法,因为当证书有问题时,此答案不准确。
2021-04-26 16:41:21
不知道 .protocol,比我的解决方案简单
2021-05-03 16:41:21
窗户。是全局范围,因此不需要,只是一个旁注。
2021-05-06 16:41:21
我喜欢完全指定变量的清晰度,但我可以看到其他人可能会使用速记并使用全局范围。
2021-05-06 16:41:21
jishi:这是一个风格问题,可以说是“窗口”。使财产的来源更加清晰。可以想象,您还可以有一个名为“location”的局部/闭包变量,在这种情况下,对全局的直接访问将被隐藏。
2021-05-14 16:41:21

正如谷歌分析教会我的那样:

if ("https:" == document.location.protocol) {
    /* secure */
} else {
    /* unsecure */
}

最新浏览器的第二种方法:

var secure = window.isSecureContext;

或者只是获取 isSecureContext:

if (isSecureContext) {
   ...
}

更多信息:https : //developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#Feature_detection#Feature_detection

来自链接页面的警告:“本地交付的文件(例如http://localhostfile://路径)被认为已安全交付。”
2021-05-13 16:41:21