检测当前 Internet Explorer 安全区域

Posted

技术标签:

【中文标题】检测当前 Internet Explorer 安全区域【英文标题】:Detecting Current Internet Explorer Security Zone 【发布时间】:2010-10-12 03:57:05 【问题描述】:

是否有任何以编程方式确定 Internet Explorer 当前安全区域设置的方法?

我想知道我的站点何时会因为 IE 安全策略而阻止 XMLHttpRequest ActiveX 控件,但在站点实际尝试创建它并因此导致黄色条出现在顶部之前(说“帮助为了保护您的安全,Internet Explorer 已限制此网页运行可能访问您计算机的脚本或 ActiveX 控件。”)

谢谢。

【问题讨论】:

【参考方案1】:

在 IE7 中,您可以使用以下 javascript 来了解您的网站是否受信任:

window.status = "test";
if (window.status == "test")
  alert("Trusted, or local intranet");
else
  alert("Not trusted, or internet");

这是基于在 IE7 及更高版本中,脚本无法再通过 Internet 和受限区域中的 window.status 方法设置状态栏文本。见Release Notes for Internet Explorer 7

【讨论】:

【参考方案2】:

安全区域无关紧要,因为 Windows 用户可以自行确定哪些协议由哪个区域处理。例如,我将整个 http 和整个 https 区域添加到受信任站点区域(区域 2)。这是通过密钥完成的

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet     Settings\ZoneMap\ProtocolDefaults

您可以通过 javascript 检查 document.protocol,但这对您有什么帮助?

if (document.protocol == "HTTP (HyperText Transfer-Protokoll)")

您假设它是 Internet 区域,但在我的计算机上,它是受信任区域,具有自己的个人安全设置。很遗憾 jscript 不允许您获取每个区域的单独安全设置值。

可以在没有那个愚蠢的黄色条的情况下执行 activex 对象,但是您需要将 com 对象 guid 添加到安全 com 对象列表中。这是通过注册表完成的。默认值对于大多数对象都是不安全的,除了一些愚蠢的无用垃圾对象,如 flash activex、wmp activex 和 stuff

【讨论】:

【参考方案3】:

我想知道我的网站什么时候会因为 IE 安全策略而阻止 XMLHttpRequest ActiveX 控件

即使您确实知道自己所在的区域,您也无法读取,因为您无法读取每个区域的设置,并且从 IE6SP2 开始,还有更多影响 ActiveX 的设置无法在每个区域上进行配置-区基础。 (IE7 有更多特定于控件的设置。)

我没有办法推测性地创建 XMLHttpRequest 并避免黄色条,只使用本机的“新 XMLHttpRequest()”对象,这会使您与 IE6 不兼容。

【讨论】:

【参考方案4】:

注意:我无法删除已接受的答案,但您可以找到this answer useful。

原答案:

JavaScript 中没有句柄来检测 IE 正在使用的安全区域。

为了做你需要做的事情,你可以检查 document.location 并从中确定安全区域。

【讨论】:

如何从url中识别内网区域?这对添加到不同区域或区域限制更改的网站有何影响? 您将无法访问任何自定义安全区域信息 - 但您可以做出一般性决定。

以上是关于检测当前 Internet Explorer 安全区域的主要内容,如果未能解决你的问题,请参考以下文章

html 使用HTML检测Internet Explorer

Internet Explorer 11 检测

JavaScript 使用JavaScript检测Internet Explorer的新方法

javascript 检测Internet Explorer(IE)到版本11和Edge(12+)

为啥在安装Windows Internet Explorer 7的时候,提示"此操作系统不支持Windows Internet Explorer 7.

无法在 Internet Explorer 或 Microsoft Edge 中检测到触摸