最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

思考

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

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

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

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

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

axios 獲取結果

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

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框架,看個流程就行,驗證請求是否是 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

總結

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

相關文章

  • 關閉時刷新父窗口兩種方法

    關閉時刷新父窗口兩種方法

    這篇文章主要介紹了刷新父窗口兩種方法,需要的朋友可以參考下
    2014-05-05
  • 詳解JS ES6變量的解構賦值

    詳解JS ES6變量的解構賦值

    這篇文章主要介紹了JS ES6變量的解構賦值,對ES6感興趣的同學,可以參考下
    2021-05-05
  • Javascript實現(xiàn)時間倒計時效果

    Javascript實現(xiàn)時間倒計時效果

    這篇文章主要為大家詳細介紹了Javascript實現(xiàn)時間倒計時效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 淺談setTimeout 與 setInterval

    淺談setTimeout 與 setInterval

    實際上,setTimeout和setInterval的語法相同。它們都有兩個參數(shù),一個是將要執(zhí)行的代碼字符串,還有一個是以毫秒為單位的時間間隔,當過了那個時間段之后就將執(zhí)行那段代碼。不過這兩個函數(shù)還是有區(qū)別的
    2015-06-06
  • kmock javascript 單元測試代碼

    kmock javascript 單元測試代碼

    javascript其實是非常需要單元測試的,但是qmock總感覺不好使?或是文檔的新舊有問題,反正我暫時是只需要函數(shù)調(diào)用的次數(shù)判斷,結果就寫了個kmock
    2011-02-02
  • JS異步文件分片斷點上傳的實現(xiàn)思路

    JS異步文件分片斷點上傳的實現(xiàn)思路

    在項目中有時會遇到大文件上傳,經(jīng)常會出現(xiàn)鏈接超時的問題,所以就需要使用文件分片上傳的方式來上傳大文件。下面通過本文給大家介紹js異步文件分片斷點上傳的實例代碼,需要的的朋友參考下吧
    2016-12-12
  • NW.js 簡介與使用方法

    NW.js 簡介與使用方法

    NW.js (原名 node-webkit)是一個基于 Chromium 和 node.js 的應用運行時,通過它可以用 HTML 和 JavaScript 編寫原生應用程序.這篇文章主要介紹了NW.js 簡介與使用,需要的朋友可以參考下
    2018-02-02
  • JavaScript字符串包含問題

    JavaScript字符串包含問題

    這篇文章主要介紹了JavaScript字符串包含問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • javaScript 利用閉包模擬對象的私有屬性

    javaScript 利用閉包模擬對象的私有屬性

    JavaScript缺少塊級作用域,沒有private修飾符,但它具有函數(shù)作用域。作用域的好處是內(nèi)部函數(shù)可以訪問它們的外部函數(shù)的參數(shù)和變量(除了this和argument
    2011-12-12
  • JavaScript實現(xiàn)簡單圖片翻轉(zhuǎn)的方法

    JavaScript實現(xiàn)簡單圖片翻轉(zhuǎn)的方法

    這篇文章主要介紹了JavaScript實現(xiàn)簡單圖片翻轉(zhuǎn)的方法,涉及javascript操作圖片與數(shù)組的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04

最新評論

瓦房店市| 监利县| 林西县| 盐边县| 济源市| 铜山县| 长宁区| 迁西县| 沅陵县| 义乌市| 顺平县| 廉江市| 公安县| 盘锦市| 九龙县| 镶黄旗| 始兴县| 安新县| 宜章县| 常熟市| 盐亭县| 宽甸| 龙陵县| 新沂市| 乌什县| 舞钢市| 鄂托克旗| 凤山县| 临城县| 定远县| 西宁市| 和田市| 乐平市| 吉木乃县| 闸北区| 临沭县| 洛浦县| 连山| 车致| 高平市| 门头沟区|