是否有任何以编程方式确定 Internet Explorer 当前安全区域设置的方法?
我想知道我的站点何时会因为 IE 安全策略而阻止 XMLHttpRequest ActiveX 控件,但在站点实际尝试创建它并因此导致黄色条出现在顶部之前(说“帮助保护您的安全, Internet Explorer 已限制此网页运行可访问您计算机的脚本或 ActiveX 控件。")
谢谢。
是否有任何以编程方式确定 Internet Explorer 当前安全区域设置的方法?
我想知道我的站点何时会因为 IE 安全策略而阻止 XMLHttpRequest ActiveX 控件,但在站点实际尝试创建它并因此导致黄色条出现在顶部之前(说“帮助保护您的安全, Internet Explorer 已限制此网页运行可访问您计算机的脚本或 ActiveX 控件。")
谢谢。
在 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 的发行说明
安全区域无关紧要,因为 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 和其他东西
我想知道我的网站什么时候会因为 IE 安全策略而阻止 XMLHttpRequest ActiveX 控件
即使您确实知道您所在的区域,您也无法读取,因为您无法读取每个区域的设置,并且从 IE6SP2 开始,还有更多影响 ActiveX 的设置无法在每个区域的基础上进行配置。(IE7 具有更多特定于控件的设置。)
我不知道如何推测性地创建一个 XMLHttpRequest 并避免黄色条,只使用本机的“新 XMLHttpRequest()”对象,这会使您与 IE6 不兼容。
注意:我无法删除已接受的答案,但您可能会发现此答案很有用。
原答案:
JavaScript 中没有句柄来检测 IE 正在使用的安全区域。
为了做你需要做的事情,你可以检查 document.location 并从中确定安全区域。