是否可以在 IE 中进行从 https 到 http 的跨域请求?
Posted
技术标签:
【中文标题】是否可以在 IE 中进行从 https 到 http 的跨域请求?【英文标题】:Is it possible to make a cross domain request from https to http in IE? 【发布时间】:2013-12-26 19:12:18 【问题描述】:我们正在尝试从浏览器访问本地自托管 WCF 服务。
WCF 服务位于http://localhost/myWcf
。
浏览器正在运行一个位于https://some.www.com
的网站。
我们已启用 CORS 并将 CORS 标头添加到托管的 WCF。使用 jQuery 的 $.ajax 调用来访问 WCF 服务。不使用 SSL 时,所有浏览器都可以正常工作,并且我们会收到“成功”回调。 当切换到 SSL 时,IE 是唯一一个无法发出请求的——“访问被拒绝”。我们将网站移至受信任的站点部分,基本上允许那里的所有内容,但仍然没有成功。我们使用的是 IE11/10,并且我们已经通过它的模拟器尝试了以前的版本。他们都不允许我们提出这个要求。
我们可以像这样从 https 处理位于 http 中的图片:
<img src="http://asdasd">
但我们尝试使用 javascript 它失败了:
var img = new Image();
img.src="http://asdasd";
我们缺少什么? IE中真的不能从https到http的跨域请求吗?
【问题讨论】:
您可以解决图片问题,因为 IE 中的图像没有单一来源策略,但有安全到非安全 XHR 的来源策略。 @DanielWaters 有什么办法让它工作吗? PKolos 下面的答案会起作用,但存在源策略是有原因的,尤其是对于安全连接。您是否无法通过自签名证书将 HTTP 端点设为 HTTPS? 【参考方案1】:检查jsonp:
var script = document.createElement('script');
script.id = 'dynScript';
script.type='text/javascript';
script.src = 'http://localhost/myWcf';
document.getElementsByTagName('head')[0].appendChild(script);
JSONP 是解决跨域脚本错误的好方法。
【讨论】:
以上是关于是否可以在 IE 中进行从 https 到 http 的跨域请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 IE 中使用 CORS 从 https 调用 http?