通过这篇文章把今天学习中遇到的HTTP跨域和OPTION请求的一个坑记录下来。
场景是在springboot项目导入了Sa-token依赖,vue在请求接口是在请求头传递了token,但是后端未能读取到有效的token。产生这种情况的主要原因就是支持CORS请求的浏览器一旦发现ajax请求跨域,会对请求做一些特殊处理,对于已经实现CORS接口的服务端,接受请求,并做出回应。有一种情况比较特殊,如果我们发送的跨域请求为“非简单请求”,浏览器会在发出此请求之前首先发送一个请求类型为OPTIONS的“预检请求”,验证请求源是否为服务端允许源,这些对于开发这来说是感觉不到的,由浏览器代理。
而在OPTIONS请求中,不会携带请求头的参数,导致SaInterceptor中如 StpUtil.checkLogin() 等鉴权操作无法读取到token而错误拦截请求。
那么,我们解决的基本思路就是在