背景
工程进行服务拆分时服务端需要进行JWT校验,增加了JWTInterceptor对不符合JWT要求的所有请求直接做返回处理。
现象
后端HttpClient直接调用服务无问题,postman模拟请求调用服务无问题
前端ajax请求调用服务无法获取header中的token参数
问题原因
ajax跨域分简单请求及复杂请求,所有json格式的统一都为复杂请求,复杂请求会先发送一个预请求到服务器请求权限,这个请求必须放行,请求放行之前不会发送真正的请求到服务器,预请求是OPTIONS方法,可以通过request.getMethod()方法获得。
解决方案
对OPTIONS请求放行,真正的请求会在此请求通过验证后发送,见代码