,,axios 处理 302 状态码的解决方法

,,axios 处理 302 状态码的解决方法

本文主要介绍了axios处理302状态码的解决方案,很不错,有参考价值。有需要的朋友可以参考一下。

例如,浏览器打开单页(SPA)应用程序,一段时间后,令牌(或会话)过期。此时,在页面上发起Ajax请求后,后端返回302状态代码,并跳转到登录页面。我在用Vue axios,发现axios无法拦截302请求。流程是这样的。

思考

谷歌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 -

服务器302和位置-

浏览器请求一个新的url -

服务器返回200-

Axios获得结果

那么如何解决呢?需要服务器端合作解决。

浏览器(ajax而非auth)

服务器被判断为ajax请求,但没有登录,返回401状态码-

浏览器axios拦截401,通过js跳转/登录。

解决

浏览器方面,axios增加了拦截器。

axios . interceptors . response . use((response)={

返回响应;

},函数(错误){

if(401===error . response . status){

window . location='/log in ';

}否则{

return Promise.reject(错误);

}

});

axios . defaults . headers . common[' X-Requested-With ']=' XMLHttpRequest ';

后端代码,用flask框架,只看流程,验证请求是不是ajax没有登录,然后返回401状态码。

从flask导入蓝图,请求,jsonify,make_response,中止

从flask_login.utils导入当前用户,当前应用程序

apibp=Blueprint('api ',' api_bp ')

#主逻辑

def bp_login_required():

如果不是当前用户,则:

if request.is_xhr:

中止(401)

否则:

return current _ app . log in _ manager . unauthorized()

API BP . before _ request(BP _ log in _ required)

@ API BP . route('/report/domains/month/',methods=['GET'])

每月定义_域(月):

返回jsonify({})

裁判员

https://github.com/axios/axios/issues/690

总结

以上是边肖对axios处理302状态码的解决方案。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • nagios监控使用方法,nagios下载
  • nagios监控使用方法,nagios下载,Nagios的安装与使用详细教程
  • ios长截图方法,iOS怎样长截图
  • ios长截图方法,iOS怎样长截图,iOS实现简单长截图
  • ios网络视频播放器,Ios音乐播放器
  • ios网络视频播放器,Ios音乐播放器,iOS利用AVPlayer播放网络音乐的方法教程
  • ios状态栏怎么自定义,ios状态栏图标
  • ios状态栏怎么自定义,ios状态栏图标,iOS中状态栏的基本使用方法汇总
  • ios旋转立体图形游戏,ios 旋转屏幕
  • ios旋转立体图形游戏,ios 旋转屏幕,iOS动画特效之立方体翻转
  • iOS推送延迟,ios消息延迟的解决方法
  • iOS推送延迟,ios消息延迟的解决方法,对比分析iOS延迟执行的4种方式
  • ios build版本号规范,ios version什么意思
  • ios build版本号规范,ios version什么意思,iOS 项目中的version和build 详解
  • 电脑bios没有u盘启动选项怎么办,win10u盘启动bios设置后还是无法启动
  • 留言与评论(共有 条评论)
       
    验证码: