Ral*_*hur 16 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();
Run Code Online (Sandbox Code Playgroud)
当"url"中的方案是"http://"时,该命令正常工作.但是,当方案是"https://"IE8给我一个"拒绝访问"JavaScript错误.这两种方案在FF 3.6.3中运行良好,我当然使用XmlHttpRequest.对于这两种浏览器,我都遵守W3C访问控制."http://"适用于两种浏览器的交叉原点.所以问题出在IE8,XDomainRequest和SSL上.
SSL证书不是问题.如果我<host在IE8的地址栏中键入https:// > /,其中<host>与上面的"url"相同,页面加载正常.
所以我们有以下内容:
- <host直接从浏览器点击https:// > /可以正常工作;
- 点击https:// <host>/api/acquire?<query string>不允许通过XDomainRequest.
可以吗?我要留下什么了?
Ral*_*hur 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://"方案; 不,如果不能.
| 归档时间: |
|
| 查看次数: |
3831 次 |
| 最近记录: |