如何在 IE 中使用 CORS 从 https 调用 http?

Posted

技术标签:

【中文标题】如何在 IE 中使用 CORS 从 https 调用 http?【英文标题】:How to call http from https using CORS in IE? 【发布时间】:2013-01-31 05:29:25 【问题描述】:

我有一个 HTTPS 站点,需要使用 CORS 调用 HTTP 站点(提供 JSON REST 服务)。

使用 Chrome 和 Firefox 没有问题。

在使用 IE(从 IE8 到 IE10 测试)时,我们有“访问被拒绝”。

我正在寻找绕过这种约束的方法。我不想使用 iframe 或小程序。 有人知道使用 CORS 混合 HTTP/HTTPS 的方法吗?

还有其他选择吗:

也许是 websockets(但我们至少需要 html5 / IE10)? jsonp? JSON 请求?

【问题讨论】:

【参考方案1】:

我认为您不能在 IE8 或 IE9 中执行此操作。请参阅this blog post 上的第 7 点“请求必须针对与托管页面相同的方案”

Websockets 可以帮助您使用 Firefox 和 IE10,但您可能希望查看通过 https 传输 http web 服务的服务器端代理。

【讨论】:

谢谢罗伯特。有关信息,我已经测试了 JsonP,但由于我们混合了 https 和 http 内容,因此我们在 IE 中有一个警报。当然可以在浏览器的选项中禁用它。我会看看WebSocket,但它需要一个兼容的服务器(Tomcat7或其他);所以它的影响!。 关于您通过 https 传达我们的 http 网络服务的想法,这是我们的选择之一。但由于它是内部访问(通过 LAN 或 ***),我们认为在我们已经处于安全环境中时添加一层加密是很遗憾的。注意要更清楚:局域网中的浏览器请求一个 https 页面(局域网外)。在浏览器中,此页面请求 http 服务(在 LAN 中)。 你有没有找到办法做到这一点?在 IE10+ 中从 https 调用 http 正是我需要做的【参考方案2】:

您不能在 IE8/9 上从 https 调用 http,但对于任何感兴趣的人,this link 显示了一个解决方法,即如何从 http 调用 https

【讨论】:

以上是关于如何在 IE 中使用 CORS 从 https 调用 http?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 IE 中进行从 https 到 http 的跨域请求?

IE8可以从HTTP到HTTPS发布跨域请求吗?

IE11 CORS 拒绝 https 上的 OPTIONS

IE 11 上 CORS 预检请求的奇怪问题失败

在带有 Node 和 Express 的 IE10 中使用 CORS 的安全错误

iecors - IE 8 + 9 中用于 CORS 的 jQuery 插件在页面首次加载时不起作用