vue-cli-service Axios 持续返还401

2023-12-24 14:20

本文主要是介绍vue-cli-service Axios 持续返还401,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

后端:

  • 在登录超时或没有登录的情况,所有请求都会拒绝并且返还HTTP状态码401

前端:

  • 前端将认证的Token放到loadStorage中,在认证失效时候清空。
  • 在接到HTTP状态码为401时,自动的跳转到登录页面,因此有了下面 axios 的全局拦截器
import axios from 'axios';
import router from './router'// 全局在处理到未认证的错误时统一进入回到根路径
axios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。return response;
}, function (error) {// 超出 2xx 范围的状态码都会触发该函数。if (error.response.status == 401) {if (router.currentRoute.value.path != '/') {router.replace("/")}// 返回空表示不再需要后续链路处理return null;}return Promise.reject(error);
});

错误重现过程:

  1. 打开 后台 、前端开发模式(npm run serve)。
  2. 通过前端登录页面进入系统。
  3. 重启后台服务器,该操作将会导致前端存储的Token失效。
  4. 在前端刷新页面,由于token失效,返回了401的状态码,被全局的拦截器截取到,并替换路由到/
  5. 在登录页再次登录,无论怎么登录都返还401.

Chrome Network 抓包结果如下

在这里插入图片描述
Wireshark抓包结果如下

在这里插入图片描述

后台日志: 没有任何输出,通过Wireshark抓包发现并没有流量到后端。

问题解决

刷新页面

因此我推测前端可能存在问题,排查了许久,没有找到原因,在无奈之下只能手动刷新前端页面

// 全局在处理到未认证的错误时统一进入回到根路径
axios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。return response;
}, function (error) {// 超出 2xx 范围的状态码都会触发该函数。if (error.response.status == 401) {if (router.currentRoute.value.path != '/') {router.replace("/")}// 刷新页面location.reload()// 返回空表示不再需要后续链路处理return null;}return Promise.reject(error);
});

问题得到解决。

这篇关于vue-cli-service Axios 持续返还401的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532064

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript