Failed to load resource: the server responded with a status of 401 (UNAUTHORIZED) 解决token失效 401错误码

2023-05-16

在这里我们要对别人的错误状态进行判断,来使用刷星token 解决token失效的 401的问题, 让别人在后台看不见的地方,登陆失败,然后里面调用这里的请求,再获取最新的token值,然后重新设置到我们的本地存储里面去

import axios from 'axios';
import config from '@/config/url.config';
import { setItem, getItem } from '@/utils/storage';
import router from '../router';

const request = axios.create({
  baseURL: config.baseURL,
});

const whiteList = ['authorizations'];

// 在请求拦截器里面,给所有的请求 设置一个功能的请求头 authorization; 就是一个令牌,就是一个身份的作用,因为http协议是没有状态,别人不知道我们有没有登录;
request.interceptors.request.use(
  function(config1) {
    // console.log('请求拦截器的打印:', config1);
    // config1.headers.Authorization = 'Bearer ' + getItem().token;
    // 在给所有请求添加token的时候,要做一个路由白名单的校验; 比如登录,注册,发验证码等请求,因为它们根本就没有进入系统,也就没有token;所以不需要发
    if (!whiteList.includes(config1.url) && getItem()) {
      // null.token
      config1.headers.Authorization = `Bearer ${getItem().token}`;
    }
    return config1;
  },
  function(error) {
    return Promise.reject(error);
  }
);

request.interceptors.response.use(
  function(response) {
    // console.log('响应拦截器的打印:', response);
    return response.data;
  },
  function(error) {
    // 在这里我们要对别人的错误状态码进行判断, 来使用刷新token 解决token失效 也就是401的问题; 让别人在后台 看不见的地方,登录以失败,然后里面调用这里的请求,在获取最新的token值,然后重新设置到我们的 本地储存里面去
    console.dir(error);
    if (
      error.response &&
      error.response.status === 401 &&
      error.response.statusText === 'UNAUTHORIZED'
    ) {
      if (getItem() && getItem().refresh_token) {
        axios({
          url: 'http://ttapi.research.xxxx.cn/app/v1_0/authorizations',
          method: 'PUT',
          headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            // Authorization: 'Bearer ' + getItem().refresh_token,
            // 如果不加bearer 空格 的话,就会报错 wrong token
            Authorization: `Bearer ${getItem().refresh_token}`,
          },
        }).then((res) => {
          console.log(111, res);
          setItem({
            token: res.data.data.token, // toekn值使用最新的
            refresh_token: getItem().refresh_token, // 刷新toekn还是使用以前的,
          });
          request(error);
           router.go(0);
        });
      }
    }
    return Promise.reject(error);
  }
);

export default request;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Failed to load resource: the server responded with a status of 401 (UNAUTHORIZED) 解决token失效 401错误码 的相关文章

  • 有没有办法将 LOAD DATA INFILE(导入)xlsx 文件导入 MySQL 数据库表

    我知道这已经被讨论了很多 但我没有找到如何做到这一点的解决方案 我需要的是将 Excel 文件 xls xlsx 导入到我的数据库表中 这是一个执行此操作的按钮 执行的命令如下 string cmdText LOAD DATA INFILE
  • 如何在 C++ 中加载共享对象?

    我有一个共享对象 so Windows dll 的 Linux 等效项 我想将其导入并与我的测试代码一起使用 我确信这不是那么简单 但这就是我想做的事情 include headerforClassFromBlah h int main l
  • 如何在 jQuery .load() 之后更新 DOM?

    我想从模板文件 b xhtml 加载html内容 将其插入调用文件 a xhtml 然后更新插入的节点 例如添加 删除属性等 插入部分工作正常 但 DOM 似乎没有更新 这是测试用例 a xhtml 调用的html文件
  • jmeter无法记录浏览器操作

    我正在使用 apache jmeter 2 6 我想使用 HTTP 代理服务器记录浏览器操作 但动作并没有记录 我已经在线程组下定义了 HTTP 请求默认值 我为服务器名称指定了值 如下所示 http www xxxxx com 81 ht
  • 是否可以使用 JavaScript 更改 document.readyState ?

    我正在通过网站上的 iframe 加载 HTML 正在加载的 HTML 应该等待父文档加载完成后才加载某些内容 document readyState interactive document readyState complete 问题在
  • Locust.io 负载测试出现“连接中止 BadStatusLine”错误

    我正在使用 Locust io 来加载测试应用程序 我会收到一个随机错误 我无法查明问题 1 ConnectionError ProtocolError Connection aborted BadStatusLine 2 Connecti
  • 如何在 Ubuntu Web 服务器上为 Dart 安装 pub(命令行使用)

    我已按照说明进行操作 在 Linux 选项卡下 将 Dart 安装到 Ubuntu Web 服务器上 Dart 本身工作正常 但我无法使用 Pub 命令 仅限 Dart 命令 如何为服务器安装 Pub 以下是使用 Aptitude apt
  • WPF负载控制问题

    我正在 WPF 中做一些事情 我有一个ComboBox与许多Types 选择具体类型后 我希望能够加载特定的用户控件 有许多文本框等 尊重我的 WPF 窗口上定义区域的类型 怎么做 有没有类似的东西LoadControl 并将其加载到Pla
  • android 延迟加载未在手机上显示图像或显示速度很慢

    我正在使用 JSON 来解析在线 xml 文档以及两种延迟图像加载的方法 以下是我的源代码 解释和我的问题 解释 方法一 使用AsyncTask和线imageLoader DisplayImage String jsonImageText
  • Ajax 追加加载

    它必须是jquery 我有文件 text html 其中有 6 个 div a b c d e f 在另一个文件中 我有一个 div 我喜欢它将 a b c d e f 的内容填充到该单个 div 中 我尝试过 load 但 b 替换了 a
  • MongoError:拓扑已关闭,尽管已建立数据库连接,仍请连接

    我正在编写一个 Web 应用程序 它使用异步数据库请求作为 api 的一部分 目前 我有一个异步快速路由 等待异步函数返回函数 这两个函数都返回布尔值并且都查询数据库 第一个可以正常工作 但第二个却不能 这是 MongoClient 设置
  • 我将如何保存和加载 UITextField?

    我到处搜索并尝试了很多代码 但似乎没有什么对我有用 我需要做的就是加载 在 viewDidLoad 上 一个文本字段并在按下按钮时保存它 是什么easiest这样做的方法 我正在使用单窗口应用程序 我没有视图控制器 这可能会有所不同 Tha
  • 在 jQuery/Javascript 元素上应用 CSS 规则后的事件

    CSS 规则应用于 DOM 中的所有元素后是否会发生事件 我知道绑定 window load 来自 jQuery 在加载所有 js 和 css 文件时触发 但在应用它们时则不然 动态应用和包含之间有几毫秒的小延迟 例如 design att
  • Java:加载重构后保存在硬盘上的对象=>“找不到类”异常:/

    我正在用java开发一个应用程序 它使用这个简单的方法定期将对象保存到硬盘上 public void save String filename try FileOutputStream fos new FileOutputStream fi
  • Javascript:检测窗口何时完全加载

    我有一个脚本 可以在网页生命周期的任何阶段加载 当脚本加载时 它必须运行一个initialize 方法 我希望此函数在 onload 事件上运行 但我无法确定该页面尚未加载 即 onload 尚未被触发 理想情况下我的脚本如下所示 var
  • 找不到“System.Security.Cryptography.ProtectedData”,版本:“4.4.0”

    我正在尝试在 Windows Server 2012 Datacenter 上部署 NET Core 应用程序 我已经安装了 NET Core Windows Server 托管捆绑包 https aka ms dotnetcore 2 w
  • 如何加载之前存储的svm分类器?

    我正在 Visual Studio 中使用 openCV SVM OpenCV 2 4 4 0 我训练它 mySVM train trainingDataMat labelsMat Mat Mat params 已保存 mySVM save
  • 无法在运行 apache 服务器上访问 http://localhost:80

    在 ubuntu 14 04 中运行 apache 服务器时我得到 This webpage is not available 在浏览器中或 curl 7 Failed to connect to localhost port 80 Con
  • $(this) 在函数中不起作用

    以下代码从文件加载 html 内容 我使用这个线程 https stackoverflow com questions 168963 stop jquery load response from being cached
  • 无法远程连接到Python Socket

    我已经使用 python 套接字和 Tkinter 创建了一个聊天应用程序 它在本地运行得很好 但是客户端无法远程连接到服务器 当我输入我的公共 IP 地址作为主机时 我已经完全端口转发了我的网络并且我知道如何很好地进行端口转发 当我运行在

随机推荐

  • TRACE32——基于SNOOPer的变量记录

    TRACE32 基于SNOOPer的变量记录 在我们日常调试工作中 xff0c 经常会遇到一种场景 xff1a 对于某些变量或者内存的值 xff0c 希望对其进行监控 当这些变量发生写或者读的时候 xff0c 将这些操作记录下来 xff0c
  • TRACE32——内存填充测试Data.Pattern

    TRACE32 内存填充测试Data Pattern Data Pattern 命令可以用于对内存 xff08 SRAM DDR Flash等 xff09 写入随机值 xff0c 以快速地测试内存是否可以正确读写 命令格式 xff1a 示
  • STM32使用printf重定向

    最近用STM32CubeMX创建了一个demo工程 xff0c 在调试过程中 xff0c printf打印功能一直不能正常打印 xff0c 检查工程中也已将fputc函数进行了实现 奇怪的是用JTAG进行调试时打印恢复了正常 最后发现问题的
  • repo的安装和使用

    前言 Android 采用 Gerrit 提供代码评审服务 xff0c 并且开发了一个客户端工具 repo xff0c 实现多仓库管理 Git 的开发者对服务端的 Git 源码做了扩展 xff0c 使得基于 Git xff08 cgit x
  • repo sync之后不能自动 rebase 的定位

    背景 最近在使用repo sync同步代码时老是报告 xff1a branch xxx is published but not merged and is now 1 commits behind 我之前是由推送过一笔提交 xff0c 但
  • git取指定日期log问题

    库上版本有一个重要bug xff0c 使用了如下命令取一个版本 xff1a repo forall c 39 commitID 61 96 git log before 34 2022 12 09 00 00 00 34 1 pretty
  • ROS读取激光雷达点云数据(RS-Lidar为例)

    一 准备工作 xff1a 1 安装ROS xff08 含有rviz xff09 xff1b 2 安装pcl ros pcl xff08 Point Cloud Library xff09 ros 是ROS中点云和3D几何处理的接口和工具 如
  • 标准预定义的宏

    标准预定义宏是由相关的语言标准规定的 xff0c 所以它们可以在所有执行这些标准的编译器中使用 旧的编译器可能不会提供所有这些宏 它们的名字都以双下划线开头 FILE 这个宏扩展为当前输入文件的名称 xff0c 以 C 字符串常数的形式 这
  • Realsense L515使用

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 主要参考二 基本情况 xff08 一 xff09 ubuntu和ROS情况 xff08 二 xff09 主要步骤 总结
  • 电脑前置摄像头运行ORB-SLAM2 Mono

    ROS本地摄像头 下载安装usb cam包 最好将它放在ROS空间的src文件夹下 xff0c 方便管理 git clone https github com bosch ros pkg usb cam git usb cam cd usb
  • ERROR:cannot launch node of type

    当使用roslaunch启动ros节点时 xff0c 如果出现 ERROR cannot launch node of type 这个错误 xff0c 一般原因是由于没有source bashrc 因此工作空间使用 source bashr
  • Ubuntu 18.04 运行PL-VINS

    代码地址 https span class token operator span span class token comment github com cnqiangfu PL VINS span 安装过程出错参考 PL VINS配置
  • rosbag.bag.ROSBagUnindexedException: Unindexed bag

    rosbag bag ROSBagUnindexedException Unindexed bag ROSBAG
  • d435i 相机和IMU联合标定

    一 前提 我们已经对RGB摄像头和IMU进行了单独标定 参考之前博文 RGB标定 IMU kalibr官方WIKI Kalibr 二 准备标定文件 2 1 标定板yaml文件 标定下载链接 Aprilgrid 6x6 0 5x0 5 m u
  • opencv版权nofree问题

    找到3 1 0中cpp文件拷贝到3 4 12中 xff0c 重新cmake编译 xff0c 即可使用 nofree解决方案
  • realsense d435i 自制Euroc数据集

    参考 提取bag Python程序地址 span class token operator span home span class token operator span yang span class token operator sp
  • orb-slam2运行自己数据集

    因为我跑的是双目摄像头 所以首先在orb slam2下找到ros stereo cc文件然后对其中的rostopic节点进行修改 首先先找到自己对应的节点在 自己录制的 bag 数据集下打开终端执行 rosbag info xxx bag在
  • 【Linux】CMake编译C/C++工程文件

    Linux CMake编译C C 43 43 工程文件 文章目录 Linux CMake编译C C 43 43 工程文件前言一 CMake编译工程1 1 两种方式设置编译规则1 2 两种构建方式1 3 CMake构建C C 43 43 工程
  • STM32学习笔记 GPIO初始化参数结构体介绍

    GPIO初始化参数结构体如下 xff1a typedef struct uint16 t GPIO Pin GPIOSpeed TypeDef GPIO Speed GPIOMode Typedef GPIO Mode GPIO InitT
  • Failed to load resource: the server responded with a status of 401 (UNAUTHORIZED) 解决token失效 401错误码

    在这里我们要对别人的错误状态进行判断 来使用刷星token 解决token失效的 401的问题 让别人在后台看不见的地方 登陆失败 然后里面调用这里的请求 再获取最新的token值 然后重新设置到我们的本地存储里面去 span class