OPTIONS请求 简单请求与 非简单请求

当浏览器发出了一个跨域的xhr的时候,浏览器会自动在请求头加上一些参数,

对于简单请求和非简单请求是不一样的,先看一下简单请求的定义:

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

  • HEAD
  • GET
  • POST

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

  • Accept
  • Content-Language
  • Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

的时候是简单请求。

对于简单请求,浏览器直接在请求头上加一个Origin字段,说明本次请求来自哪个源(协议+域名+端口)

 服务器根据这个值,决定是否,如果返回响应头没有Access-Control-Allow-Origin,那么会被前端xhronerror捕获(状态码是200)

否则是非简单请求,对于非简单请求,浏览器会发出预检请求 options是浏览器的preflight(预检)请求,

除了 Origin,至少还会多出两个字段 Access-Control-Request-Method、Access-Control-Request-Headers

(1)Access-Control-Request-Method

该字段是必须的,用来列出浏览器的CORS请求会用到哪个HTTP方法。

(2)Access-Control-Request-Headers

该字段是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段。

与JSONP的对比

CORS与JSONP的使用目的相同,但是比JSONP更强大。

JSONP只支持GET请求。

原文地址:https://www.cnblogs.com/eret9616/p/9791973.html