我尝试构建一个简单的包装器函数,用于在IE 8中生成CORS Ajax请求:
function getCORS(url, success) {
var xhr = new XDomainRequest();
xhr.open('GET', url);
xhr.onload = success;
xhr.send();
return xhr;
}
getCORS('http://foo.com/?q=test', function(request){
console.log(request.currentTarget.response || request.target.responseText);
});
然而,IE 8返回“拒绝访问”,尽管使用“XMLHttpRequest()”的现代浏览器中的CORS请求正常工作。有什么想法吗?
答案 0 :(得分:1)
Internet Explorer XDomainRequest
永远不会发送Cookies
或Authorization
标头。这意味着如果请求的目标受到保护,则永远不会对请求进行身份验证。
如果您真的必须这样做(我过去必须为本机HTTP流式传输执行此操作),您需要使用不使用Cookie的授权方案来保护XDomainRequest
的目标。 Authorization
标题(http basic auth)。例如,您可以先从受保护的地址获取某种令牌,然后将该令牌发送到XDomainRequest
目标。