跨域解决方案——CORS

76 阅读1分钟

CORS: Cross-Origin Resource Sharing

CORS 是一套机制,用于浏览器校验跨域请求

它的基本理念是:

只要服务器明确表示允许,则校验通过

服务器明确拒绝或者没有表示,则校验不通过

使用CORS的前提是:

必须确定服务器是“自己人”

CORS将请求分为两类:

  1. 简单请求
  2. 预检请求

简单请求

满足以下3个条件的可以认定是简单请求:

  1. 请求方法为: GETPOSTHEAD

  2. 头部字段满足CORS安全规范

  3. 请求头的Content-Type为:

  • text/plain
  • multipart/form-data
  • application/x-www-form-urlencoded

浏览器会在请求头中设置 Oringin: xxx.com:8080

服务器会在响应头中设置字段:

  • Access-Control-Allow-Origin: xxx.com:8080 或者
  • Access-Control-Allow-Origin: *

预检请求

  1. 发送预检请求(请求方法为OPTIONS

预检请求的请求头大概包括以下内容:

  • OPTIONS /api/xxx HTTP/1.1
  • Origin: xxx.com:8080
  • Access-Control-Request-Method: POST
  • Access-Control-Request-Header: a, b, content-type

服务器返回响应头中包括以下内容:

  • Access-Control-Allow-Origin: xxx.com:8080
  • Access-Control-Allow-Method: POST
  • Access-Control-Allow-Header: a, b, content-type
  • Access-Control-Max-Age: 86400
  1. 发送真实请求

和简单请求一致