欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年04月10日 11:12:29   作者:orangleliu  
這篇文章主要介紹了axios 處理 302 狀態(tài)碼的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

比如說瀏覽器打開了一個(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, 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

總結(jié)

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

相關(guān)文章

  • js日期格式化yyyy-MM-dd問題

    js日期格式化yyyy-MM-dd問題

    這篇文章主要介紹了js日期格式化yyyy-MM-dd問題,具有很好的參考價(jià)值,希望對大家大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳細(xì)分析JavaScript變量類型

    詳細(xì)分析JavaScript變量類型

    本文給大家詳細(xì)分析了javascript中的6種變量類型,通過示例做了詳細(xì)的解釋,十分的實(shí)用,對于大家熟練掌握變量類型非常有幫助,有需要的小伙伴可以參考下。
    2015-07-07
  • 微信小程序進(jìn)入廣告實(shí)現(xiàn)代碼實(shí)例

    微信小程序進(jìn)入廣告實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了微信小程序進(jìn)入廣告實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 原生js實(shí)現(xiàn)自定義難度的掃雷游戲

    原生js實(shí)現(xiàn)自定義難度的掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)自定義難度的掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • js顯示當(dāng)前日期時(shí)間和星期幾

    js顯示當(dāng)前日期時(shí)間和星期幾

    這篇文章主要介紹了js獲取當(dāng)前日期時(shí)間同時(shí)顯示星期的方法,具有參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-10-10
  • 復(fù)制Input內(nèi)容的js代碼_支持所有瀏覽器,修正了Firefox3.5以上的問題

    復(fù)制Input內(nèi)容的js代碼_支持所有瀏覽器,修正了Firefox3.5以上的問題

    今天作一個(gè)功能,有一個(gè)input,里邊有內(nèi)容,點(diǎn)一下按鈕就復(fù)制里邊的內(nèi)容到剪貼板
    2010-06-06
  • JS數(shù)組array元素的添加和刪除方法代碼實(shí)例

    JS數(shù)組array元素的添加和刪除方法代碼實(shí)例

    這篇文章主要介紹了JS數(shù)組array元素的添加和刪除方法代碼實(shí)例,本文直接給出操作代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • Rxjs tap 操作符的使用場景示例

    Rxjs tap 操作符的使用場景示例

    這篇文章主要為大家介紹了Rxjs tap 操作符的使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • JavaScript 對象不變性介紹

    JavaScript 對象不變性介紹

    這篇文章主要介紹了JavaScript 對象不變性,對象不變性在任何編程語言中都是一個(gè)重要的概念。它會限制對象修改并防止不需要的更改。簡而言之,對象的不變性就是將它的狀態(tài)變?yōu)橹蛔x的下面詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • JavaScript 常用函數(shù)庫詳解

    JavaScript 常用函數(shù)庫詳解

    在WEB開發(fā)中,javascript提供了許多函數(shù)供開發(fā)人員使用,這些函數(shù)在Ajax流行前足夠了,但要構(gòu)建一個(gè)交互性強(qiáng)些的應(yīng)用恐怕就麻煩了。
    2009-10-10

最新評論