码迷,mamicode.com
首页 > 其他好文 > 详细

CORS跨域请求总结

时间:2017-08-15 10:24:21      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:str   flight   条件   level   成功   发送   .com   nbsp   ajax   

CORS跨域请求分为简单请求和复杂请求。

1. 简单请求:

满足一下两个条件的请求。

(1) 请求方法是以下三种方法之一:

  • HEAD
  • GET
  • POST

(2)HTTP的头信息不超出以下几种字段:

  • Accept
  • Accept-Language
  • Content-Language
  • Last-Event-ID
  • Content-Type:只限于三个值application/x-www-form-urlencodedmultipart/form-datatext/plain

2. 复杂请求:

非简单请求就是复杂请求。

非简单请求是那种对服务器有特殊要求的请求,比如请求方法是PUTDELETE,或者Content-Type字段的类型是application/json

非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。

预检请求为OPTIONS请求,用于向服务器请求权限信息的。

预检请求被成功响应后,才会发出真实请求,携带真实数据。

3. CORS与cookies:

上面说到,CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。


Access-Control-Allow-Credentials: true

另一方面,开发者必须在AJAX请求中打开withCredentials属性。


var xhr = new XMLHttpRequest();
xhr.withCredentials = true;//XMLHttpRequest level2才有withCredentials属性

4. 减少预检请求次数

服务端设置Access-Control-Max-Age可以将预检请求进行客户端缓存,减少请求次数

 

具体可以参考:http://www.ruanyifeng.com/blog/2016/04/cors.html

CORS跨域请求总结

标签:str   flight   条件   level   成功   发送   .com   nbsp   ajax   

原文地址:http://www.cnblogs.com/mengff/p/7362048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!