axios怎样解决302状态码问题

这次给大家带来axios怎样解决302状态码问题,axios解决302状态码问题的注意事项有哪些,下面就是实战案例,一起来看一下。

比如说浏览器打开了一个单页面(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, 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//", methods=["GET"])def monthly_domains(month):  return jsonify({})ref

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

vue的select内置组件使用步骤详解

React使用时避免重渲染

以上就是axios怎样解决302状态码问题的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2757247.html

(0)
上一篇 2025年3月8日 07:51:53
下一篇 2025年3月7日 11:00:42

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何使用vue axios进行请求拦截

    这次给大家带来如何使用vue axios进行请求拦截,使用vue axios进行请求拦截的注意事项有哪些,下面就是实战案例,一起来看一下。 axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客…

    编程技术 2025年3月8日
    200
  • 怎样使用vue-cli axios请求方式及跨域处理

    这次给大家带来怎样使用vue-cli axios请求方式及跨域处理,使用vue-cli axios请求方式及跨域处理的注意事项有哪些,下面就是实战案例,一起来看一下。 安装axios cnpm install axios –save 登录…

    编程技术 2025年3月8日
    200
  • vue利用axios来完成数据的交互

    这篇文章主要介绍了vue利用axios来完成数据的交互,本文通过实例代码给大家讲解数据交互方法及安装方法,需要的朋友可以参考下 axios基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用 现在Vue官…

    2025年3月8日
    200
  • 浅谈Postman解决token传参的问题

    下面我就为大家分享一篇浅谈postman解决token传参的问题,具有很好的参考价值,希望对大家有所帮助。 问题描述: 有一个登陆接口获取token,其他接口再次访问都要带上token 解决方案: 1、在登陆接口访问后设置Postman的环…

    2025年3月8日 编程技术
    200
  • vue axios请求拦截实例代码

    axios 是一个基于promise 用于浏览器和 nodejs 的 http 客户端.这篇文章主要介绍了vue/axios请求拦截的相关知识,需要的朋友可以参考下 axios 简介 axios 是一个基于Promise 用于浏览器和 no…

    编程技术 2025年3月8日
    200
  • 如何使用Vue二次封装axios插件

    这次给大家带来如何使用Vue二次封装axios插件,使用Vue二次封装axios插件的注意事项有哪些,下面就是实战案例,一起来看一下。 不管用什么方式获取数据,对于一个项目来说,代码一定要利于维护其次是一定要写的优美,因此加上一层封装是必要…

    编程技术 2025年3月8日
    200
  • vue渲染时闪烁{{}}的问题及解决方法

    v-if和v-show可能是日常开发中最常用的两个指令,虽然看上去两者功能是类似的,但是两者还是存在很大区别的。接下来通过本文给大家分享vue渲染时闪烁{{}}的问题及解决方法,感兴趣的朋友一起看看吧 v-if和v-show可能是日常开发中…

    编程技术 2025年3月8日
    200
  • vue-cli axios请求方式及跨域处理问题

    这篇文章主要介绍了vue-cli axios请求方式及跨域处理问题,文中还给大家提到了vue中axios解决跨域问题和拦截器使用,非常不错,具有参考借鉴价值,需要的朋友参考下吧 vue-cli axios请求方式以及跨域处理 安装axios…

    编程技术 2025年3月8日
    200
  • axios post提交formdata的实例

    下面我就为大家分享一篇axios post提交formdata的实例,具有很好的参考价值,希望对大家有所帮助。 vue框架推荐使用axios来发送ajax请求,之前我还写过一篇博客来讲解如何在vue组件中使用axios。但之前做着玩用的都是…

    2025年3月8日 编程技术
    200
  • 在vue组件中使用axios的方法

    下面我就为大家分享一篇在vue组件中使用axios的方法,具有很好的参考价值,希望对大家有所帮助。 现在我们通过webpack+vue-cli搭建起了一个vue项目的框架,如果我们需要在vue组件中使用axios向后台获取数据应该怎么办呢?…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论