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. 改成简单请求(业务中可能性不大)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。