Vue http request 請求攔截器
阿新 • • 發佈:2021-01-15
目的:統一配置請求資訊及錯誤處理
好處:方便
// 1.新增 http request 請求攔截器,有token值則配置上token值
axios.interceptors.request.use(
config => {
// 在傳送請求之前做些什麼
const token = Cookies.get("token") ? Cookies.get("token") : "";
if (token) {// 每次傳送請求之前判斷是否存在token,如果存在,則統一在http請求的header都加上token,不用每次請求都手動添加了
config.headers.Authorization = `Bearer ${ token }`;
}
return config;
},
error => {
// 對請求錯誤做些什麼
router.push({path: "/NotFound"});
return Promise.reject(error);
})
//2.新增 http response 響應攔截器
axios.interceptors.response.use(
data => {
// 對響應資料做點什麼
return data;
},
error => {
// 對響應錯誤做點什麼
if (error.response) {
switch (error.response.status) {//401的時候,如果是公眾號跳登入,企業號、app給提示
case 400:
Message.error({
message:"賬號/密碼錯誤",
type: "error",
duration:2000
})
case 401://沒有許可權
router.replace(
{path: "/Login",query: {redicet: router.currentRoute.fullPath} }
);
break;
case 403:
router.push({path: "/NotFound4"});
break;
case 404:
router.push({path: "/NotFound4"});
break;
case 500:
router.push({path: "/NotFound5"});
break;
case 502:
router.push({path: "/NotFound5"});
break;
case 503:
router.push({path: "/NotFound5"});
break;
}
} else {
router.push({path: "/NotFound"});
}
return Promise.reject(error);
})
注:Bearer Token是Access Token 型別的其中一種
優點:
呼叫簡單,不需要對請求進行簽名。
缺點:
請求API需要使用https協議保證資訊傳輸安全。
Access Token有效期一個月,過期後需要使用Refresh Token進行重新整理。
Bearer型別token定義了三種token傳遞策略,客戶端在傳遞token時必須使用其中的一種,且最多一種。
- 放在Authorization請求頭部
- 放在請求實體中
- 放在URI請求引數中