91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

axios 處理 302 狀態碼的解決方法

發布時間:2020-09-23 03:58:06 來源:腳本之家 閱讀:430 作者:orangleliu 欄目:web開發

比如說瀏覽器打開了一個單頁面(SPA)應用,過了一段時間token(或者session)過期了,這個時候頁面上發起 Ajax請求之后,后端返回302狀態碼跳轉到login頁面。 我這是使用的是 Vue + axios ,發現 axios 無法攔截到 302請求,下面是處理的過程。

思考

google axios 302 handle 看到 axios github 上的兩個討論

•  https://github.com/axios/axios/issues/932

•  https://github.com/axios/axios/issues/980

得到的結論就是:瀏覽器發送的ajax請求,服務端返回了302狀態碼,瀏覽器會自行跳轉,我們無法通過 js 庫(jquery, axios) 直接得到并自定義處理流程,只能等到瀏覽器重定向之后的url獲取相應信息。

axios 發送ajax -->
server 返回302和location -->
瀏覽器請求新的url -->
服務端返回200 -->

axios 獲取結果

那么怎么解決呢?需要服務端配合解決

Brower (ajax and not auth) -->
server判斷是ajax請求,未登陸,返回 401狀態碼 -->
瀏覽器 axios 攔截401,并且通過js 跳轉到 /login

解決

瀏覽器端, axios 增加攔截器

axios.interceptors.response.use((response) => {
  return response;
}, function (error) {
  if (401 === error.response.status) {
    window.location = '/login';
  } else {
    return Promise.reject(error);
  }
});
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

后端代碼,使用flask框架,看個流程就行,驗證請求是否是 ajax 和 未登陸,然后返回401狀態碼

from flask import Blueprint, request, jsonify, make_response, abort
from flask_login.utils import current_user, current_app
apibp = Blueprint('api', 'api_bp')
# 主要邏輯
def bp_login_required():
  if not current_user.is_authenticated:
    if request.is_xhr:
      abort(401)
    else:
      return current_app.login_manager.unauthorized()
apibp.before_request(bp_login_required)
@apibp.route("/report/domains/<month>/", methods=["GET"])
def monthly_domains(month):
  return jsonify({})
ref

•   https://github.com/axios/axios/issues/690

總結

以上所述是小編給大家介紹axios 處理 302 狀態碼的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元朗区| 临西县| 大田县| 家居| 洛川县| 光泽县| 龙南县| 营口市| 裕民县| 莲花县| 育儿| 聊城市| 永靖县| 瑞安市| 浦县| 石林| 三门峡市| 青铜峡市| 利辛县| 九寨沟县| 凉城县| 临沭县| 长宁县| 肃北| 江口县| 吉木乃县| 邵武市| 泊头市| 乌兰察布市| 永清县| 共和县| 彝良县| 临桂县| 辽源市| 陇川县| 鹤壁市| 萝北县| 格尔木市| 大竹县| 郧西县| 宽甸|