axios设置请求头_删除请求头
首先描述下我在项目中的应用场景:
因为项目中用户登录后后台会返回该用户对应的token,然后以后再请求数据时都需要再请求头中携带这个token。但但但,但是,登录也是个接口,我发现登录过后再退出登录后,在调用登录的这个接口,请求头中还是会带上token,这就不对了。后台这时就会报签名错误,(但其实就是这个缓存的token,和要登录的这个用户的token不一致导致的。或者是相同的用户,但是缓存的token已经失效了。)
补充一下前提条件:我的请求方式是,封装了两个请求方法,一个是登录后携带token请求数据交互的,一个只是登录时使用。
下面贴出代码:
请求数据的请求:
import $axios from 'axios';
if (type == 'POSTBM') {
//此处就是我设置请求头的地方
$axios.defaults.headers.common['Authorization'] = `zjxnjz_${JSON.parse(localStorage.getItem("ms_user")).authToken}`;
let dataValue = data || '';
let promise = new Promise(function (resolve, reject) {
$axios
.post(url,dataValue)
.then(res => {
// console.log(data)
if (res.data.code == 0) {
if (res.data.data) {
resolve(res.data.data)
} else if (res.data) {
resolve(res.data)
}
}else{
// console.log(data)
// console.log(url)
reject(res.data)
}
})
.catch(err => {
//console.log("走了错误");
reject(err)
});
});
return promise
}
登录时的请求
if (type == 'POST_RSA') {
let dataValue = data || '';
let promise = new Promise(function (resolve, reject) {
$axios
.post(url, dataValue),{
transformRequest:[function (data1,headers){
//这个请求不需要请求头(在此处删除,上方设置的请求头。)
if(headers.common.Authorization){
delete headers.common.Authorization;
}
return data1;
}]
})
.then(res => {
// console.log(data)
if (res.data.code == 0) {
if (res.data.data) {
resolve(res.data.data)
} else if (res.data) {
resolve(res.data)
}
}else{
// console.log(data)
// console.log(url)
resolve(res.data)
}
})
.catch(err => {
// console.log("走了错误");
reject(err)
});
});
return promise
}
注:这里我想,应该是在给axios设置完请求头,应该是全局都会一直使用吧,直到这个请求头修改或者被删除吧。
参考文档:axios设置的请求头应该如何删除