原版 JavaScript IE8 中 XDomainRequest 的 CORS 请求无法正常工作

Vanilla JavaScript CORS request with XDomainRequest in IE8 not working

我尝试构建一个简单的包装函数来在 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 returns "Access denied",尽管使用 'XMLHttpRequest()' 的现代浏览器中的 CORS 请求可以正常工作。有什么想法吗?

Internet Explorer 的 XDomainRequest 永远不会发送 CookiesAuthorization header。这意味着如果您的请求目标受到保护,则永远无法对请求进行身份验证。

如果您真的必须这样做(我过去必须为本机 HTTP 流式传输这样做),您需要使用不使用 cookie 的授权方案来保护 XDomainRequest 的目标,或者Authorization header(http 基本身份验证)。例如,您可以先从受保护地址获取某种令牌,然后将该令牌发送到您的 XDomainRequest 目标。