![为什么某些域名的“允许此网站在您的计算机上打开程序”警告有所不同?](https://linux22.com/image/1611605/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9F%90%E4%BA%9B%E5%9F%9F%E5%90%8D%E7%9A%84%E2%80%9C%E5%85%81%E8%AE%B8%E6%AD%A4%E7%BD%91%E7%AB%99%E5%9C%A8%E6%82%A8%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E6%89%93%E5%BC%80%E7%A8%8B%E5%BA%8F%E2%80%9D%E8%AD%A6%E5%91%8A%E6%9C%89%E6%89%80%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
在企业环境中,我们有一个应用程序,它仅使用 JavaScript 打开 Outlook,它从 iframe 执行以下代码:
top.location.href="mailto:[email protected]&subject=some subject"
当我在非生产环境中使用 Internet Explorer 11 时,出现以下警告,我可以单击“允许”,一切正常。
(此图像仅为互联网上的一个示例,我们的域名并未暴露在互联网上)
问题在于生产环境(相同应用程序版本)的 URL 不同。当我点击相同的链接时,我收到上述消息,但“允许”按钮被禁用,我无法点击它。
请注意生产证书有效且签名正确。
为什么“允许”按钮在生产中被禁用?
答案1
也许计算机之间的差异在于注册表。
可以通过以下注册表编辑禁用此提示:
HKCU:对于当前用户:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ProtocolExecute\mailto]
"WarnOnOpen"=dword:00000000
HKLM:对于整个计算机:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ProtocolExecute\mailto]
"WarnOnOpen"=dword:00000000
HKLM:适用于 32 位程序使用的整个 64 位计算机:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\ProtocolExecute\mailto]
"WarnOnOpen"=dword:00000000
如果您不想完全禁用提示mailto:
,您应该寻找其他差异,例如与已安装的安全软件的差异。
答案2
简单英语答案:您的生产/企业系统更加偏执。它们可能包含敏感内容和/或不相信用户不会点击某些内容,因此这变得更加困难。
技术答案:
我认为这与 IE 安全区域和他们设置的 GPO 有关,这些 GPO 会强化/覆盖默认设置,因此您需要与域管理员合作以满足生产要求。他们可能会希望将您的网站/Web 应用程序添加到受信任的站点列表中,或者放松控制设置mailto
URI(Windows GUI 中的协议)。
区域/设置的 GUI 位置:Internet 选项、安全,选择 Internet 单击自定义级别,向下滚动到杂项(大约一半):
GPO 位置(取决于区域和用户与计算机配置[覆盖]):
Computer Configuration\Administrative Templates\Windows Components\Internet Explorer\Internet Control Panel\Security Page\Internet Zone\
Computer Configuration\Administrative Templates\Windows Components\Internet Explorer\Internet Control Panel\Security Page\Trusted Sites Zone\
User Configuration\Administrative Templates\Windows Components\Internet Explorer\Internet Control Panel\Security Page\Trusted Sites Zone\
微软的这篇文章可能有助于更好地解释
我认为这与 Web/SSL 证书无关,因为它只是一个mailto
,问题在于允许网站/浏览器与本地机器上的应用程序交互(在浏览器或 PC 中配置为网站永远不应该控制它)