1. Options 请求是浏览器发送的

当“请求跨域资源”“并且不是一个简单请求”时,浏览器会发送一个“跨域前预检”(cors-preflight-request),对应的请求方式就是 OPTIONS ,这个请求仅用于确认 header 响应。

2. 什么是简单请求

同时满足下面几点则是简单请求:

0. 请求方法必须是以下之一:GET、HEAD、POST
1. 只有以下 header 字段允许被修改或被设置,否则触发预检:Accept、Accept-Language、Content-language、Content-Type(部分值)、DPR、Downlink、Save-Data、Viewport-Width、Width
2. Content-Type 的值只被允许设置为以下三个之一:application_x-www-form-urlencoded、multipart_form-data、text/plain。也就是说,如果请求的 Content-Type 被设置为 application/json;charset=utf-8 时也会触发预检。
3. 添加任何额外的自定义的 header 都会触发预检,例如 Token
4. 不可监听和使用 XMLHttpRequestUpload,ReadableStream

3. 绕开 options 请求?

1. 服务器端设置 Access-Control-Max-Age 字段,单位是秒。这个字段表示发送一次 Options 请求通过后多长时间内不会再次要求验证。
2. 改成简单请求(业务中可能性不大)

海洋饼干
1.5k 声望191 粉丝