gpt4 book ai didi

javascript - 带有 IE11+ 的 CORS 拒绝使用 SSL 访问本地主机

转载 作者:可可西里 更新时间:2023-11-01 02:24:55 24 4
gpt4 key购买 nike

非常简短的版本:是否有人通过 SSL 在 IE 中通过 AJAX 成功请求本地资源?我无法解决“访问被拒绝”错误。


较长的版本:

我正在使用 AJAX 从运行本地 Web 服务的应用程序中检索 JSON。 Web 服务 channel 已加密,因此如果远程站点通过 HTTPS 提供服务,则不会出现“安全页面上的不安全资源”错误。

因此,在地址栏中是某种远程站点...mysite.com。它正在从 https://localhost/ 接收信息。

Web 服务正在为 CORS 设置正确的 header ,并且在 Chrome 和 Firefox 中一切正常。在 IE 中,如果我将我的 https://localhost 资源放入地址栏,则会返回并显示正确的资源。但是,当使用 AJAX(不仅仅是地址栏)时,IE 中的安全设置拒绝访问。这在此处记录(部分):

Access denied in IE 10 and 11 when ajax target is localhost

在一个回复中唯一正确的解决方案是将请求域(在本例中为 mysite.com)添加到受信任的站点。这行得通,但我们更希望没有用户干预......指向有关如何添加受信任站点的知识库文章并不是很好的用户体验。该问题的其他回复无效,原因如下-->

更多的绊脚石,我发现了这一点:

CORS with IE, XMLHttpRequest and ssl (https)

它有一个回复,其中包含 IE 中 AJAX 请求的包装器。这看起来很有希望,但事实证明,IE11 现在已经弃用了 XDomainRequest API。这对微软来说可能是正确的做法……但现在,向 XDR 对象添加一个 void onProgress 处理程序的“hack”解决方法显然不是一个选项,曾经有希望的解决方法包装器变得无效。

有没有人遇到过:

a) 无需修改 IE 中的受信任站点即可通过这些请求的方法?换句话说,第二个链接中解决方法的更新版本?

b) 作为“下一个最佳”案例:一种提示用户将站点添加到他们的信任区域的方法? “mysite.com 希望添加到您的信任区域。确认是/否”并完成,而不需要他们实际打开他们的 native 设置对话框并手动执行?

最佳答案

出于安全原因,Internet Explorer 的 XDomainRequest 对象阻止从 Internet 区域访问 (see #6 here) Intranet 区域。得知此 block 已移植到 XMLHTTPRequest 对象的 IE10+ CORS 实现中,我不会感到惊讶。

可能有帮助的一种方法是简单地将 localhost 更改为 127.0.0.1,因为后者被视为 Internet 区域 而不是 Intranet 区域,因此避免了区域交叉。

但是,您应该知道,当站点在增强保护模式 (EPM) 下运行时,Internet Explorer 10+ 将阻止对本地计算机的所有访问(通过任何地址)——请参阅 this post 中的“环回被阻止” .目前,IE 仅在 Metro/Immersive 浏览模式(而非桌面)下运行时将 EPM 用于 Internet 站点,但这在未来可能会改变。

不,没有任何机制可以从 JavaScript 显示 Zones-Configuration UI 或自动将站点从一个区域移动到另一个区域。但是,您拥有本地服务器这一事实意味着您已经在客户端上运行代码,这意味着您可以 use the appropriate API更新客户端上的区域映射。请注意,此类更改需要您先明确获得用户许可,以免您的安装程序被 Windows Defender 和其他安全产品视为恶意软件。

因此,总而言之,使用 IP 地址应该是许多(但不是所有)平台的解决方法。

关于javascript - 带有 IE11+ 的 CORS 拒绝使用 SSL 访问本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com