编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

axios升级后自定义header没有值解决方案

原来我的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)
    }
)

等空了,再看看有没有更好的解决方案吧。

未经允许不得转载: 技术文章 » 前端开发 » axios升级后自定义header没有值解决方案