https://zhuanlan.zhihu.com/p/70032617
https://blog.csdn.net/RuanBigShuai/article/details/104917470
这里解释了 OPTIONS 请求
springboot vue 跨域的什么都设置了,但是在后端拦截器中获取的header 中的token参数总是为null
原因:
- 实际上发送了两次请求,第一次为OPTIONS请求,第二次才GET/POST…请求
- 在OPTIONS请求中,不会携带请求头的参数,所以在拦截器上获取请求头为空,自定义的拦截器拦截成功
- 第一次请求不能通过,就不能获取第二次的请求了GET/POST…
- 第一次请求不带参数,第二次请求才带参数
解决方案:(在拦截器中)
//如果是 OPTIONS 请求,让 OPTIONS 请求返回一个200状态码
if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
log.info("OPTIONS请求,放行");
return true;
}