原文地址:https://blog.csdn.net/qq_35860138/article/details/85340769

1、首先,说一下我们的项目情况,我们项目中后端有一个拦截器,如果必须要登录的接口路径会被拦下来检查,前端要传一个token【我们项目中叫sessionId】,然后后端根据这个token来判断redis中这个用户是否已经登录。

2、但是现在问题出现了,就是这个sessionId就是死活传不过来,试了各种办法还是不行,感觉像是前端的问题又像是后端的问题,心态接近爆炸,这个时候就开始冷静从头想到尾,看看到底是哪里的问题。

3、于是看每一步的细节啊,下面是那个找问题的过程截图:

【1】前端的请求header信息

xuehuayu.cn

【2】

xuehuayu.cn

【3】前端控制台的报错信息

xuehuayu.cn

【4】后端的日志信息

xuehuayu.cn

4、看问题截图,有个重要错误信息:就是OPTIONS请求出错,这个时候去搜资料,看到各种说法

【1】有的说,好像是OPTIONS请求无法携带自定义header

【2】有的说后端网关会拦截OPTIONS请求

。。。。。。

5、最后一个一个尝试,下面的方法可以:

在拦截器中加几行代码:
//添加这行代码,让OPTIONS请求通过
if (httpServletRequest.getMethod().equals(“OPTIONS”)) {
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
return true;
}

6、OK、一切正常!