今天碰到一個比較困難的問題,對於前端小白來說一臉懵逼。問題就是怎么在響應頭里面獲取token,對於token想必大家都不陌生,但是到響應頭里面獲取token還是頭一次。之前token都是后端返回給前端,聽到這個需求之后,心中萬馬奔騰。接下來就是vue中的axios怎么從響應頭里面拿token:
axios.interceptors.response.use( response => { //axios攔截器
if (response.status === 200) { //響應成功后
if(response.headers['Authorization']){ //獲取響應頭里面的數據,**Authorization根據你響應頭里面的數據獲取,並不是唯一值**
downLoad(response.data,response.headers['Authorization'].split(';')[1].split('=')[1]);
}
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
}, error => { //報錯后的處理,這里不是重點,
// 服務器狀態碼不是200的情況
if (error.response.status) {
switch (error.response.status) {
case 401:
Notification.error({
title: '錯誤',
message: '登錄過期,請重新登錄'
});
// 清除token
localStorage.removeItem('token');
store.commit('loginSuccess', null);
setTimeout(() => {
router.replace({
path: '/login',
query: {
redirect: router.currentRoute.fullPath
}
});
}, 1000);
break;
case 404:
Notification.error({
title: '錯誤',
message: '網絡請求不存在',
});
break;
case 504:
Notification.error({
title: '錯誤',
message: '服務器內部異常',
});
break;
// 其他錯誤,直接拋出錯誤
default:
Notification.error({
title: '錯誤',
message: error.response.data.message
});
}
return Promise.reject(error.response);
}
});
詳情見axios鏈接 https://www.kancloud.cn/yunye/axios/234845
每天改一個bug,成長一大步