我正在制作一个使用Axios的网络应用。 我有一个基本服务类,它有一个拦截器,可以为每个请求添加访问令牌。但是,拦截器不会在我的PATCH请求上添加令牌,只能在GET请求上添加。
我的基础api服务
import axios from 'axios'
export default class api {
constructor (path) {
this.api = axios.create({
baseURL: 'http://localhost:1337/' + path
})
this.api.interceptors.request.use(config => {
config.headers['x-access-token'] = localStorage.getItem('jwt-token')
return config
})
this.api.interceptors.response.use(undefined, (err) => {
if (err.response.status === 401) {
throw err
} else {
throw err
}
})
}
}
扩展基础的服务
import Api from './api'
export default class ProfileService extends Api {
constructor () {
super('profile/')
}
me () {
return this.api.get('/me')
}
updateProfile (uuid, data) {
return this.api.patch('/' + uuid, data)
}
}
如果我像这样建立一个全局拦截器,Axios会将令牌添加到PATCH请求中:
axios.defaults.headers.common['x-access-token'] = localStorage.getItem('jwt-token');
我不想这样做,因为它也会将令牌发送到其他服务器。
为什么我的拦截器在每个实例指定时不会添加令牌的任何想法?这是Axios的错误吗?
OPTIONS-request具有以下标题:
Access-Control-Allow-Headers:x-access-token,X-Requested-With,Content-Type,Accept,Authorization,Origin
Access-Control-Allow-Methods:GET,PUT,POST,PATCH,OPTIONS
提前致谢,
阿克塞尔