检测当前 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
JavaScript 使用JavaScript检测Internet Explorer的新方法
javascript 检测Internet Explorer(IE)到版本11和Edge(12+)
为啥在安装Windows Internet Explorer 7的时候,提示"此操作系统不支持Windows Internet Explorer 7.