我自己写了个微服务的项目玩玩,然后在gateway网关层集成了satoken做网关统一鉴权,使用ApiFox调用接口的时候都是没问题的。
我写了个前端,用的axios调的接口,然后出现了跨域问题,这个是正常的,我在网关层的application.yml文件里配置了跨域处理之后也没问题。因为集成了satoken,做了接口校验,有的接口只能在登录之后才有权限访问。
问题就出现在这里,login登录接口是不需要鉴权的,做了跨域处理之后,axios能正常调用返回结果。但是在使用axios调用除不需要鉴权以外的接口的时候,satoken在请求头里面获取不到 Authorization 这个请求头,所以就拿不到 token 令牌。问题是我在axios的请求拦截器里面是做了判断的,也给请求头添加了 Authorization 这个请求头,但是我F12查看了 Network 里面实际的请求格式里面,它没有带上 **Authorization ** 这个请求头,不知道是什么原因,而且里面的 RequestMethod 也变成了 OPTIONS 类型的请求。
后端GateWay网关层的跨域处理配置
spring:
profiles:
active: dev
main:
web-application-type: reactive
cloud:
gateway:
globalcors:
cors-configurations:
'[/**]':
allowedOriginPatterns: "*"
allowedMethods: "*"
allowedHeaders: "*"
exposedHeaders: "*"
后端GateWay网关层集成的Satoken统一鉴权的配置类

前端axios的拦截器处理
import axios from 'axios';
import { getToken } from '@/composables/cookie';
const log_service = axios.create({
baseURL: 'http://localhost:8000/api',
timeout: 5000,
headers: {
'Content-Type': 'application/json;charset=utf-8'
}
})
log_service.interceptors.request.use(config => {
const token = getToken()
console.log(token)
if (token) {
config.headers['Authorization'] = 'Bearer ' + token
}
console.log(config)
return config
},error => {
return Promise.reject(error)
});
实际上的网络请求,这里不知道为什么会有两条请求,我实际上只请求了一次的

这个是Status显示为CORS error的具体的请求格式信息,这个请求格式里面的请求头有携带 Authorization

另一个请求的请求格式里面的信息,这里不知道什么原因,请求类型是OPTIONS类型的,请求头里面也没有携带Authorization

我想知道这是什么错误吗,什么原因造成,以及该怎么解决,这破问题已经折腾了三天了
