原来我的axios版本是0.18.0,后来升级到最新版0.19.2(截至2020-06-02)。
发现在header里面的token值没了,我设置全局token的方法如下:
axios.defaults.headers['User-Token'] = userToken
对axios进行了简单的封装,核心代码是
service.interceptors.request.use(
config => {
let flag = config.headers['Content-Type'] && config.headers['Content-Type'].indexOf('application/json') !== -1
if (!flag) {
let mult = config.headers['Content-Type'] && config.headers['Content-Type'].indexOf('multipart/form-data') !== -1
if (mult) {
// eslint-disable-next-line no-self-assign
// config.data = config.data
} else {
config.data = qs.stringify(config.data)
}
}
return config
},
error => {
// Do something with request error
return Promise.reject(error)
}
)比较奇怪的是,我打印config,就是没有自定义的token。也是了文档里面的方法:
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
依旧没用。
但是在service.interceptors.request.use中输出axios.defaults.headers['User-Token']又确实有值。
找了很多资料,也没有找到解决方案,如果降低axios的版本,又可以,于是想出了以下的临时解决方案:
service.interceptors.request.use(
config => {
let flag = config.headers['Content-Type'] && config.headers['Content-Type'].indexOf('application/json') !== -1
if (!flag) {
let mult = config.headers['Content-Type'] && config.headers['Content-Type'].indexOf('multipart/form-data') !== -1
if (mult) {
// eslint-disable-next-line no-self-assign
// config.data = config.data
} else {
config.data = qs.stringify(config.data)
}
}
if (axios.defaults.headers['User-Token']) {
config.headers['User-Token'] = axios.defaults.headers['User-Token']
}
return config
},
error => {
// Do something with request error
return Promise.reject(error)
}
)等空了,再看看有没有更好的解决方案吧。
编程那点事
