【发布时间】:2014-06-05 23:38:34
【问题描述】:
非常简短的版本:是否有人通过 AJAX、在 IE 中、通过 SSL 成功地请求本地资源?我无法解决出现“拒绝访问”错误。
加长版:
我正在使用 AJAX 从运行本地 Web 服务的应用程序中检索 JSON。 Web 服务通道已加密,因此如果通过 HTTPS 为远程站点提供服务,则不会出现“安全页面上的不安全资源”错误。
因此,地址栏中是某种远程站点... mysite.com。它正在接收来自https://localhost/ 的信息。
Web 服务正在为 CORS 设置正确的标头,并且在 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 希望添加到您的受信任区域。确认是/否”并完成它,而他们实际上不需要打开他们的本机设置对话框并手动执行?
【问题讨论】:
标签: javascript ajax internet-explorer ssl cors