CROS请求

1.简单请求: GET POST HEAD
HEAD 返回的仅仅是头部(可以用于指导某个url返回的数据类型)
Origin: 表示请求是来自哪一台主机.
	Access-Control-Allow-Origin: *  |  www.baidu.com 
表示允许哪一台主机进行跨域请求.*时所有主机均可以跨站请求.
2.预请求: OPTION

“预请求”要求必须先发送一个 OPTION 请求给目的站点,来查明这个跨站请求对于目的站点是不是安全可接受的。这样做,

是因为跨站请求可能会对目的站点的数据造成破坏。 当请求具备以下条件,就会被当成预请求处理:

①.请求以 GET, HEAD 或者 POST 以外的方法发起请求。或者,使用 POST

但请求数据为

application/x-www-form-urlencoded, multipart/form-data 或者 text/plain 
以外的数据类型。

比如说,用 POST 发送数据类型为 application/xml 或者 text/xml 的 XML 数据的请求。

Accept-ContentType:application/json
  此时请求数据为json,所以会发送一次预请求.

②.使用自定义请求头(比如添加诸如 X-PINGOTHER
$.ajax(url:"http://google.com",type:"get", 
	beforeSend: function(XMLHttpRequest) {
               XMLHttpRequest.setRequestHeader("X-PINGOTHER","pingpong");
        }
   )
            此时会有两个请求头一起被发送            
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-PINGOTHER
服务端应该允许该请求头: X-PINGOTHER
Access-Control-Allow-Headers: X-PINGOTHER
3.跨站时发送 cookie信息:需要将一个标志位 withCredentials设置为true.
var ajax = new XMLHttpRequest();
ajax.open('POST',"http://google.com",true);
ajax.withCredentials = true;
ajax.send;

但是,如果服务器端的响应中,如果没有返回

Access-Control-Allow-Credentials: 	true
的响应头,那么浏览器将不会把响应结果传递给发出请求的脚本程序,以保证信息的安全。

响应头:

Access-Control-Allow-Credentials:true
特别注意: 
给一个带有 withCredentials的请求发送响应的时候,服务器端必须指定允许请求的域名,不能使用'*'.
如果响应头是这样的:
Access-Control-Allow-Origin: * 

,则响应会失败.

4.检测XHR是否支持CORS:

var xhr = new XMLHttpRequest();
if (“withCredentials” in xhr){
	alert("支持 withCredentials cookie CORS")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值