401狀態碼公升級處理

2021-10-25 18:56:28 字數 2620 閱讀 3264

401狀態碼

axios向伺服器端傳送請求時有兩種情況會出現401狀態碼(unauthorized未授權):

服務端要求傳遞token資訊,而實際沒有傳遞。

有傳遞token到達伺服器端,但由於時間比較久,這個token在伺服器中已經過期了(伺服器儲存token有效期時間為2個小時)。

總之,伺服器端有些api介面要求傳遞token,token失效或沒有傳遞,就會報401錯誤。

第1種情況,可以在axios請求***中做token傳遞操作。

第2種情況,之前是這樣處理的,在axios響應***中判斷請求狀態如果是401,就強制使用者重新登入系統

這樣處理使用者體驗非常不好,現在做一次公升級優化處理。

伺服器端返回兩個秘鑰資訊,它們在服務端都有使用時效:

token有效期2小時。

refresh_token有效期14天,refresh_token用於在token過期後,重新獲取並重新整理token時效使用的。

針對第2種401狀態碼處理步驟為:

判斷refresh_token是否存在

不存在就直接重新登入。

存在,axios發起請求,帶著refresh_token請求服務端,獲取新token出來:

成功:對vuex和localstorage進行token資訊更新。

失敗:清空無效使用者資訊,直接重新登入。

示例**1:

// 響應*** (響應成功:剝離無效資料,響應失敗:重新整理token)

instance.interceptors.response.

use(res =>

catch(e

)},async err =>

= store.state

// 如果沒有token沒登入 如果沒有refresh_token無法重新整理tokenif(

!user.token ||

!user.refresh_token)

// 重新整理token,發請求,沒有配置的axios,自己配置refresh_token

const res =

await

axios(`

}})// token獲取 res.data.data.token

// 更新 vuex 和 本地 token

store.

commit

('setuser',)

// 繼續傳送剛才錯誤的請求

// instance()

// err錯誤物件 包含(response 響應物件 |config 請求配置)

return

instance

(err.config)}}

catch(e

)return promise.

reject

(err)

})

演示**:promise錯誤處理:

示例**2

import store from

'@/store'

// 引入vuex中的store例項

import router from

'@/router'

// 引入路由物件例項

……// 響應***

instance.interceptors.response.

use(

function

(response)

catch

(error)}

,async

function

(error)

}// 跳轉物件

// 如果refresh_token不存在if(

!store.state.user.refresh_token)

try`

}})// 獲取到新token後,就對vuex和localstorage進行更新

store.

commit

('updateuser',)

return

instance

(error.config)

// 把剛才錯誤的請求再次傳送出去 然後將promise返回

}catch

(err)}

return promise.

reject

(error)})

')// 所有的使用者資訊清空

router.

push

(topath)

// 跳轉到回登入頁

return promise.

reject

(err)}}

return promise.

reject

(error)

})

處理HTTP狀態碼

1.1.4 處理http狀態碼 回車,獲得響應狀態碼 http狀態碼表示http協議所返回的響應的狀態。比如客戶端向伺服器傳送請求,如果成功地獲得請求的資源,則返回的狀態碼為200,表示響應成功。如果請求的資源不存在,則通常返回404錯誤。http狀態碼通常分為5種型別,分別以1 5五個數字開頭,由...

Scrapy處理異常狀態碼

當爬取頁面狀態碼是異常狀態碼,但response是正常的時候,正常情況scrapy框架會判斷狀態碼,如果不是正常狀態碼會停止後續操作。raise httperror response,ignoring non 200 response 通過上面 可以看出,如果在請求一些頁面狀態碼異常,但respon...

117 狀態碼錯誤處理

在一些 開發中,經常會需要捕獲一些錯誤,然後將這些錯誤返回比較優美的介面,或者是將這些錯誤的請求做一些日誌儲存。1.404 伺服器沒有指定的url。3.405 請求的method錯誤。4.400 bad request,請求的引數錯誤。5.500 伺服器內部錯誤,一般是 出bug。6.502 一般是...