浏览器中的OPTIONS请求

440 阅读1分钟

1.场景

在日常开发中,当前我们发送post请求时候,在谷歌浏览器能够看到多了一个请求。

2.例子

如在掘金输入vue搜索,会发起了两个post请求,一个是list,一个是batch。

  1. 在Fetch/XHR 过滤下。符合我们预期显示了 两个请求 企业微信截图_16686524034383.png

  2. 在All 过滤下,却显示了4个请求,2个list,2个batch 企业微信截图_16686524156612.png

第一个list接口 Request method: OPTIONS image.png

第二个list接口 Request method: POST image.png

3.原因

在浏览器中,为了安全问题,在每次请求的时候(针对复杂请求),都需要先用option跟服务端先交互下,看看是否可以有跨域问题,没问题再继续下一步实际的请求。

浏览器请求分类

1. 简单跨域请求

  1. 请求头: POST GET 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

2. 复杂跨域请求

除了上面简单跨域请求,以外都是复杂跨域请求

总结

在我们实际开发中一般只需要在Fetch/XHR 过滤查看跟踪请求就ok了,不必太关心options请求,options请求是浏览器行为,并只有在遇到跨域时候才需要用到。当然我们自己也可以发起option做简单的请求校验。