跨域名的 Ajax 调用已经比较成熟了

红薯 发布于 2010/05/26 21:26
阅读 472
收藏 2

在现今版本的浏览器中,跨域名的 Ajax 已经完全可用了,但很多开发者并没有意识到这点。而这个跨域名调用仅需简单的一些 JavaScript 代码和服务器端的工作(设置 Response 的 Header)即可。IE8 对此的实现要滞后其他浏览器,但希望通过对 CORS (Cross-Origin Resource Sharing )的支持得以改善。

下面是一段用来进行跨域名 Ajax 调用的代码:

function createCORSRequest(method, url){
    var xhr = new XMLHttpRequest();
    if ("withCredentials" in xhr){
        xhr.open(method, url, true);
    } else if (typeof XDomainRequest != "undefined"){
        xhr = new XDomainRequest();
        xhr.open(method, url);
    } else {
        xhr = null;
    }
    return xhr;
}
var request = createCORSRequest("get", "http://www.nczonline.net/");
if (request){
    request.onload = function(){
        //do something with request.responseText
    };
    request.send();
}

在服务器端只需要简单设置Header即可,假设 http://www.domain1.com 要访问 http://www.domain2.com 上的资源,那么 http://www.domain2.com 需要设置 Response Header 如下:

Access-Control-Allow-Origin: http://www.domain1.com

还可以指定Ajax客户端所使用的HTTP方法和有效期:

Access-Control-Allow-Origin: http://www.domain1.com
Access-Control-Max-Age: 3628800
Access-Control-Allow-Methods: PUT, DELETE

更详细的关于服务器端的设置请看这里

开源中国社区(http://www.oschina.net) 原创,转载请注明出处。

更多 Ajax 框架请看此处

加载中
0
灰灰
灰灰

那就是说,必须要有服务器的操作权才可以啰。

0
红薯
红薯

引用来自#2楼“灰灰”的帖子

那就是说,必须要有服务器的操作权才可以啰。

是的,这种一般适合自己的网站之间进行 Ajax 调用。

返回顶部
顶部