转载自:https://www.bilibili.com/read/cv18996039/
1、 什么是 options 请求?
HTTP 的 options 方法 用于获取目的资源所支持的通信选项。
2、 options 应用场景
场景一:检测服务器所支持的请求方法
场景二:CORS 中的预检请求
在 CORS 中,可以使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。
浏览器将CORS请求分为两类:简单请求(simple request)和⾮简单请求(not-simple-request),简单请求浏览器不会预检,⽽⾮简单请求会预检。
同时满⾜下列三⼤条件,就属于简单请求,否则属于⾮简单请求。
1.请求⽅式只能是:GET、POST、HEAD
2.HTTP请求头限制这⼏种字段:Accept、Accept-Language、Content-Language、Content-Type、Last-Event-ID
3.Content-Type只能取:application/x-www-form-urlencoded、multipart/form-data、text/plain
3、优化OPTIONS请求:Access-Control-Max-Age 或者 避免触发
可见一旦达到触发条件,跨域请求便会一直发送2次请求,这样增加的请求数是否可优化呢?答案是可以,OPTIONS预检请求的结果可以被缓存。
Access-Control-Max-Age这个响应首部表示 preflight request (预检请求)的返回结果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被缓存的最长时间,单位是秒。
如果值为 -1,则表示禁用缓存,每一次请求都需要提供预检请求,即用OPTIONS请求进行检测。