XDomainRequest可以使用SSL吗?

时间:2010-06-08 16:55:59

标签: ajax ssl internet-explorer-8 internet-explorer-9 xdomainrequest

我的代码在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。

可以吗?我要留下什么了?

1 个答案:

答案 0 :(得分:18)

显然,答案就在这里:http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

此页面上的第7点说:“请求必须定位到与托管页面相同的方案。”

以下是第7点的一些支持文本:

  

“这绝对是我们阻止HTTPS页面制作的意图   基于HTTP的资源的XDomainRequests,如该场景所示   混合内容安全威胁,许多开发人员和大多数用户都这样做   不明白。

     

但是,这种限制过于宽泛,因为它会阻止HTTP   发布针对HTTPS页面的XDomainRequests的页面。虽然它是   确实HTTP页面本身可能已被泄露,没有   因为应该禁止接收公共资源   安全“。

目前看来,我原来问题的答案是:是,如果托管页面可以使用“https://”方案;不,如果不能。