原来我的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) } )
等空了,再看看有没有更好的解决方案吧。