是否可以在 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 的跨域请求?的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS从入门到了解

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

我们可以将IE控制台从开发人员工具保存到文件吗?

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

是否可以通过Packer重新打包在Modern.ie VM或Vagrant Box中启用WinRM?

软件测试知识点 fiddler抓包教程