纷纭教育
您的当前位置:首页axios中的302状态码

axios中的302状态码

来源:纷纭教育


那么怎么解决呢?需要服务端配合解决

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

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

如何使用vue请求本地json

JS操作JSON数组去重

显示全文