国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

axios 處理 302 狀態(tài)碼的解決方法

2024-05-06 16:43:41
字體:
供稿:網(wǎng)友

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

思考

google axios 302 handle 看到 axios github 上的兩個(gè)討論

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

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

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

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

axios 獲取結(jié)果

那么怎么解決呢?需要服務(wù)端配合解決

Brower (ajax and not auth) -->
server判斷是ajax請求,未登陸,返回 401狀態(tài)碼 -->
瀏覽器 axios 攔截401,并且通過js 跳轉(zhuǎn)到 /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框架,看個(gè)流程就行,驗(yàn)證請求是否是 ajax 和 未登陸,然后返回401狀態(tài)碼

from flask import Blueprint, request, jsonify, make_response, abortfrom flask_login.utils import current_user, current_appapibp = 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

總結(jié)

以上所述是小編給大家介紹axios 處理 302 狀態(tài)碼的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 荃湾区| 松潘县| 聊城市| 平顺县| 洱源县| 青阳县| 东乡族自治县| 天等县| 沙坪坝区| 河北省| 尚义县| 香港 | 钟祥市| 绩溪县| 大宁县| 沈阳市| 左权县| 梁山县| 锦屏县| 阿克苏市| 南郑县| 耿马| 灵宝市| 神池县| 安图县| 濮阳县| 佛坪县| 石景山区| 阜南县| 长岭县| 武城县| 林州市| 扶沟县| 开封县| 河北省| 山东省| 扶风县| 佳木斯市| 苏尼特左旗| 龙海市| 个旧市|