发出跨域的 Ajax GET 请求

使用现代浏览器从不同域中的服务器异步加载数据


JavaScript在不同域中的服务器异步检索数据很简单,并且与同源Ajax GET请求非常相似。 下面的辅助方法可在现代浏览器和Internet Explorer 9+中工作:


function getCORS(url, success) {
    var xhr = new XMLHttpRequest();
    if (!('withCredentials' in xhr)) xhr = new XDomainRequest(); // fix IE8/9
    xhr.open('GET', url);
    xhr.onload = success;
    xhr.send();
    return xhr;
}

// example request
getCORS('http://foo.bar/?p1=1&p2=Hello+World', function(request){
    var response = request.currentTarget.response || request.target.responseText;
    console.log(response);
});
      

在CORS中使用onload回调来代替onreadystatechange接收返回的数据。 回调函数只有一个参数(请求对象)。 根据浏览器的不同,实际的响应位于currentTarget.response或target.responseText中。

参考:
http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS