1.场景
在日常开发中,当前我们发送post请求时候,在谷歌浏览器能够看到多了一个请求。
2.例子
如在掘金输入vue搜索,会发起了两个post请求,一个是list,一个是batch。
-
在Fetch/XHR 过滤下。符合我们预期显示了 两个请求
-
在All 过滤下,却显示了4个请求,2个list,2个batch
第一个list接口 Request method: OPTIONS
第二个list接口 Request method: POST
3.原因
在浏览器中,为了安全问题,在每次请求的时候(针对复杂请求),都需要先用option跟服务端先交互下,看看是否可以有跨域问题,没问题再继续下一步实际的请求。
浏览器请求分类
1. 简单跨域请求
- 请求头: POST GET HEAD
- HTTP请求头限制这几种字段:Accept、Accept-Language、Content-Language、Content-Type、Last-Event-ID
- Content-type只能取:application/x-www-form-urlencoded、multipart/form-data、text/plain
2. 复杂跨域请求
除了上面简单跨域请求,以外都是复杂跨域请求
总结
在我们实际开发中一般只需要在Fetch/XHR 过滤查看跟踪请求就ok了,不必太关心options请求,options请求是浏览器行为,并只有在遇到跨域时候才需要用到。当然我们自己也可以发起option做简单的请求校验。