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

52

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

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

3个回答

80

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

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

如果您没有本地作用域位置,可以省略指定“window”。

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

2
window是全局作用域,因此不需要,这只是一个附注。 - jishi
不知道 .protocol,比我的解决方案更简单。 - Neil Aitken
1
技师:这是一个样式问题,可以说“window.”使属性来自哪里更清晰。可以想象,您还可以有一个名为“location”的本地/闭包变量,在这种情况下,对全局的直接访问将被隐藏。 - bobince
1
我喜欢完全指定变量的清晰度,但我可以理解其他人可能会选择使用全局范围的速记。 - tvanfosson
应尽可能使用此方法,因为在证书存在问题时,本答案不准确。 - David Callanan

11

正如 Google Analytics 所教导的:

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

3

1
来自链接页面的警告:“本地传递的文件,如http://localhostfile://路径被认为是已经安全传递的。” - SAGExSDX
我看到 window.isSecureContext == true,但浏览器由于证书无效而显示“不安全”。有没有办法检查页面是否具有“关闭锁定”且没有警告? - user9645

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接