9

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

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

谢谢。

4

4 回答 4

10

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

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

这是基于在 IE7 及更高版本中,脚本无法再通过 Internet 和受限区域中的 window.status 方法设置状态栏文本。请参阅Internet Explorer 7 的发行说明

于 2012-01-11T14:21:58.363 回答
1

安全区域无关紧要,因为 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)")

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

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

于 2010-01-14T18:28:49.343 回答
0

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

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

我不知道如何推测性地创建一个 XMLHttpRequest 并避免黄色条,只使用本机的“新 XMLHttpRequest()”对象,这会使您与 IE6 不兼容。

于 2009-03-09T16:52:04.630 回答
-1

注意:我无法删除已接受的答案,但您可能会发现此答案很有用

原答案:

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

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

于 2009-03-09T11:06:39.733 回答