浏览器在什么情况下会发起options预检请求?
在非简单请求且跨域的情况下,浏览器会发起options预检请求。
关于简单请求和复杂请求:
1.简单请求
简单请求需同时满足以下两个条件
2 复杂请求
非简单请求即是复杂请求
常见的复杂请求有:
-
请求方法为 PUT 或 DELETE
-
Content-Type 字段类型为 application/json
-
添加额外的http header 比如access_token
在跨域的情况下,非简单请求会先发起一次空body的OPTIONS请求,称为"预检"请求,用于向服务器请求权限信息,等预检请求被成功响应后,才发起真正的http请求。
3.问题:
如果浏览器前端每次请求都会在header添加token值,然后后端进行拦截验证。
但是第一次的OPTIONS请求前端是没有添加上这个token值的,所以会导致后端拦截验证失败,即所有这些跨域请求都会失败。
解决:
前后端分离,SpringBoot拦截器中,获取的请求头token为NULL问题解决_饭上的爱豆的博客-CSDN博客_token为null