我的代码在IE8中使用了Microsoft的XDomainRequest对象。代码如下所示:
var url = "http://<host>/api/acquire?<query string>";
var xdr = new XDomainRequest();
xdr.onload = function(){
$.("#identifier").text(xdr.responseText);
};
xdr.open("GET", url);
xdr.send();
当“url”中的方案为“http://”时,该命令正常工作。但是,当方案是“https://”IE8给我一个“拒绝访问”JavaScript错误。两种方案在FF 3.6.3中运行良好,我当然使用XmlHttpRequest。对于这两种浏览器,我都遵守W3C访问控制。 “http://”适用于两种浏览器的交叉原点。所以问题出在IE8,XDomainRequest和SSL上。
SSL证书不是问题。如果我在IE8的地址栏中输入https:// <host
&gt; /,其中<host
&gt;与上面的“url”相同,页面加载正常。
所以我们有以下几点:
- 直接从浏览器点击https:// <host
&gt; /工作正常;
- 点击https:// <host
&gt; / api / acquire?<query string
&gt;不允许通过XDomainRequest。
可以吗?我要留下什么了?
答案 0 :(得分:18)
此页面上的第7点说:“请求必须定位到与托管页面相同的方案。”
以下是第7点的一些支持文本:
“这绝对是我们阻止HTTPS页面制作的意图 基于HTTP的资源的XDomainRequests,如该场景所示 混合内容安全威胁,许多开发人员和大多数用户都这样做 不明白。
但是,这种限制过于宽泛,因为它会阻止HTTP 发布针对HTTPS页面的XDomainRequests的页面。虽然它是 确实HTTP页面本身可能已被泄露,没有 因为应该禁止接收公共资源 安全“。
目前看来,我原来问题的答案是:是,如果托管页面可以使用“https://”方案;不,如果不能。