1. 程式人生 > 其它 >Vue http request 請求攔截器

Vue http request 請求攔截器

技術標籤:vuehttp

目的:統一配置請求資訊及錯誤處理
好處:方便

// 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時必須使用其中的一種,且最多一種。

  1. 放在Authorization請求頭部
  2. 放在請求實體中
  3. 放在URI請求引數中