原版 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
永远不会发送 Cookies
或 Authorization
header。这意味着如果您的请求目标受到保护,则永远无法对请求进行身份验证。
如果您真的必须这样做(我过去必须为本机 HTTP 流式传输这样做),您需要使用不使用 cookie 的授权方案来保护 XDomainRequest
的目标,或者Authorization
header(http 基本身份验证)。例如,您可以先从受保护地址获取某种令牌,然后将该令牌发送到您的 XDomainRequest
目标。
我尝试构建一个简单的包装函数来在 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
永远不会发送 Cookies
或 Authorization
header。这意味着如果您的请求目标受到保护,则永远无法对请求进行身份验证。
如果您真的必须这样做(我过去必须为本机 HTTP 流式传输这样做),您需要使用不使用 cookie 的授权方案来保护 XDomainRequest
的目标,或者Authorization
header(http 基本身份验证)。例如,您可以先从受保护地址获取某种令牌,然后将该令牌发送到您的 XDomainRequest
目标。