当我在写系统时,发现/post/list请求报错跨域问题。但是/login,logout请求能通过。报错为下:
于是开始找文档,最开始以为是后端跨域配置导致的(但是仔细一想,发现/login又能够通过):

然后我试着把前端的跨域加进去,但是依旧报之前的错:

最后,发现是拦截器的原因,因为在拦截器中设置了拦截条件,正常放行的只有login,logout请求。然而post/list并没有放行,需要通过写的interceptor进行校验,很明显写的前端请求是没有通过校验的,因为最开始我写的请求headers要携带Authrazation:

这个请求并没有携带后端需要的校验头:

所以,为了通过校验,我在前端头中加入了headers:

但是依旧没有通过还是报错无法通过校验,通过查询,发现浏览器第一次请求为OPTIONS预检,并且预检是不会携带请求头的,所以还是会跨域失败,因此只要在放行条件中加入这行代码就能顺利通过了:

总结:当在拦截器设置了通过headers条件,要在注册的interceptor中添加OPTIONS放行条件,否则依旧会报跨域失败