CORS

CORS的定义

  cross-origin resource sharing——跨域资源共享
  通俗地讲,CORS是W3C的新标准,允许浏览器向非同源的服务器发出HTTP请求,解决Ajax跨域请求。

CORS请求和非CORS请求的区别

  所有的CORS请求都必须有一个固定的请求头字段:Origin。但是含有Origin头字段的请求不一定是CORS请求,因为有些浏览器在做同源请求的时候也会加上Origin字段,只不过Origin字段的值与Scheme(如,http)+Host相等。因此,判断CORS请求和非CORS请求的区别在于,请求头信息中Origin和Scheme+Host是否相等,相同则为同源请求;不相等则为CORS请求。

CORS分类

  CORS请求分为两类,简单请求和非简单请求。在请求方式上,非简单请求比简单请求多出一步预检的过程。也就是说,非简单请求首先向服务器发出预检请求,得到许可之后再发出实际的请求。

简单请求

非简单请求

预检请求头信息
  • Access-Control-Request-Method(一定含有)
  • Method=OPTIONS
  • Origin(一定含有)
  • Access-Control-Request-Headers
实际请求头信息

没有什么特殊的地方

预检请求特殊应答头
  • Access-Control-Allow-Origin(一定含有)
  • Access-Control-Allow-Credentials
  • Access-Control-Max-Age
  • Access-Control-Allow-Methods(一定含有)
  • Access-Control-Allow-Headers
实际请求特殊应答头
  • Access-Control-Allow-Origin(一定含有)
  • Access-Control-Allow-Credentials
  • Access-Control-Max-Age
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers
应答特殊头含义
  • Access-Control-Allow-Origin
      允许跨域访问的源
  • Access-Control-Allow-Credentials
      告诉客户端允许做用户确定(一种机制,服务端想知道是谁在请求自己的机制),cookies,HTTP authentication,client-side certificates。取值true/false
  • Access-Control-Expose-Headers
      向外暴露的头信息,客户端可以通过get到的头字段
  • Access-Control-Max-Age
      这个字段是针对预请求的,并不是每次非简单的CORS请求都必须进行预请求检查的,第一次请求了,可以缓存起来,保存多长时间,设置即可,秒为单位。当然,客户端浏览器设置禁用缓存,那就另当别论了。
  • Access-Control-Allow-Methods
      允许访问的请求方法方法,预请求必须返回的头信息
  • Access-Control-Allow-Headers
      允许的头信息

注意:Access-Control-Allow-Origin的取值如果是“*”,则Access-Control-Allow-Credentials不起作用;也就是说,要使用Access-Control-Allow-Credentials,Access-Control-Allow-Origin必须是确定的

附录:
用户不能设置的头字段:
* Access-Control-Request-Headers(XMLHttpRequest2中增加的)
* Access-Control-Request-Method(XMLHttpRequest2中增加的)
* Connection (关闭除外)
* Content-Length
* Content-Transfer-Encoding
* Host
* Keep-Alive
* Origin
* Trailer
* Transfer-Encoding
* Upgrade
* Via

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值