CORS 处理跨域请求

CORS 是一个 W3C 标准,全称跨域资源共享 (Cross-orign resource sharing)
其允许浏览器向跨域服务器发起异步请求,从而客服 ajax 受同源策略的限制

使用

  1. http-equiv 相当于 http 的响应头,其回应给浏览器一些有用的信息,用来帮助正确和精确的显示网页内容
  2. 以下规则表示允许任意域名下的网页跨域访问 <meta http-equiv="Access-Control-Allow-Origin" content="*">

规则[1-8 为服务器提供,9-10 为浏览器 OPTIONS 请求默认自带]

  1. Access-Control-Allow-Origin
    • 指定允许哪些源的网页发送请求
  2. Access-Control-Allow-Credentials
    • 指定是否允许发送 cookie
  3. Access-Control-Allow-Methods
    • 指定允许哪些请求方法
  4. Access-Control-Allow-Headers
    • 指定允许哪些常规的头域字段,比如 Content-Type
    • 常规头域字段有 Cache-Control 、Content-Language 、Content-Type 、Expires 、Last-Modified 、Pragma
  5. Access-Control-Expose-Headers
    • 指定允许哪些额外的头域字段,比如 X-Custom-Header
    • 该字段只有需要获取基本字段以外的其他字段时,才需要使用
  6. Access-Control-Max-Age
    • 指定 preflight OPTIONS 请求的有效期,单位秒
  7. Access-Control-Request-Method
    • 告知服务器,浏览器将发送哪种请求,例如 POST
  8. Access-Control-Request-Headers
    • 告知服务器,浏览器将包含哪些额外的头域字段

类型

  1. 简单请求,满足以下两个条件
    1. 请求时如下三种之一
      • HEAD
      • GET
      • POST
    2. http 头域不超过一下几种字段
      • Accept
      • Accept-Language
      • Content-Language
      • Last-Event-ID
      • Content-Type 且内容限定为 application/x-www-form-urlencodedplain multipart/form-data text/plain
  2. 非简单请求
    • 不满足简单请求的两个条件,即为非简单请求