场景:token过期,然后更新了token 重新发起请求获取数据 ;

代码:使用上一次的错误请求配置报错     return request(error.config) ;

解决 :

 return request({
          ...error.config,
          headers: {},
        });
// 添加响应拦截器
request.interceptors.response.use(
function (response) {
// console.log({ response });
// 对响应数据做点什么
console.log("响应拦截器成功的");
console.log("token没有过期");
console.log(response);
return response;
},
async function (error) {
// 错误原因:1. 没有登录本地没有存储token 2. token过期了 (注意是token 不是refresh_token过期了)
// 对响应错误做点什么 token 过期或者没有携带token
/**
*
第一次是每次请求都会携带本地的短token,
如果某一次出错即是短token失效,
第二次那个401是你请求使用长token刷新短token的错误代码;
*/
console.log("响应拦截器失败的");
console.log(error.config);
if (error.response && error.response.status === 401) {
// console.log("token过期了,跳转到登录页面");
// router.push("/login");
// 出现 401 错误 则说明短token过期了 需要执行刷新token逻辑
const user = store.state.user; // 从 vuex == 本地获取 user
// 如果本地没有token存储就去登录页面,没有token就是没有登录 不存在过期问题
if (!user) {
console.log("没有登录,本地没有token,直接去登录页面");
return router.push("/login");
}
// 有token 说明已经登录了 可能是登录token过期问题 我们就刷新token
// 可以把本地的token 或者 refresh_token修改然后测试token过期问题
try {
// 发起更换token的请求 参数是 refresh_token
console.log("发起更换token的请求");
console.log("token过期了");
// await refreshTokenApi(user.refresh_token) ; // 坑 !!! 不能使用 rquest 实例发起请求 因为在请求拦截器统一了token(使用的是token) 但是我封装的更新tokne接口使用的是 refresh_token 故我们要使用干净的 axios 去发起请求
const { data } = await axios({
url: "http://toutiao.itheima.net/v1_0/authorizations",
method: "put",
// 设置请求头
headers: {
Authorization: `Bearer ${user.refresh_token}`,
},
});
// 把返回的新token 保存起来
store.commit("setUserToken", {
token: data.data.token,
refresh_token: user.refresh_token,
});
// 继续上一次的出错请求(因为token导致的) 请求userInfo数据出错了
// 然后我更新了token 重新发起请求 请求 userInfo 数据
// return request(error.config) // 把之前的错误配置项传入传入即可 现在的配置项是正确的 (因为token更新了)
// return request(error.config); // 这句是错误的 因为 axios 更新升级了 之前的配置项的请求头如果在就不做调整了(不在修改了)
// console.log({
// ...error.config,
// headers: {},
// });
// ... 剩余参数在对象里面的使用
// console.log({ ...{ type: "get" }, name: "zlx" });
// {type: 'get', name: 'zlx'}
// return request({
// ...error.config,
// headers: {},
// });
} catch (err) {
// 原因 : 这里出错了说明我的更新token报错了 说明是长token(就是refresh_token )过期了
// ps:此项目的token过期时间 2 小时 refresh_token 过期时间 15 天
if (error.response && error.response.status === 401) {
console.log("refresh_token过期了 重新登录");
return router.push("/login");
} else {
// 或者其它网络错误
console.log("Promise.reject(err)是个啥");
return Promise.reject(err);
}
}
}
return Promise.reject(error);
}
);

DOMException: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'function (header, parser) { header = normalizeHeader(header);的更多相关文章

  1. Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.

    在设置请求头的时候报这个Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPE ...

  2. vue 运行项目时,Uncaught (in promise) DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL

    npm  run dev 运行项目后 验证码显示不出来 并报错 Uncaught (in promise) DOMException: Failed to execute 'open' on 'XML ...

  3. Uncaught (in promise) DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL

    解决方案:url前面一定要加http://

  4. mui.min.js:7 Uncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load

    mui框架做的微信公众号网页,在上传数据的时候报了这个错,async: true,//将false改为true就可以了 https://blog.csdn.net/liuzp111/article/d ...

  5. DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL 未能在“xmlhttpRequest”上执行“open”:无效的URL。

    出现这个报错主要是baseurl:http://192.168.*.*/后面的(/)或是请求里面的url:/user/login中前面的(/)有一个漏掉了,导致合成的路径不完整,所以报错:无效的URL

  6. Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported

    Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may no ...

  7. 使用wpaint绘图软件时:Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0.

    使用wpaint绘图软件时:Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': Th ...

  8. wordpress 点击文章图片 不能编辑(chrome下面) wordpress Uncaught DOMException: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset 1.

    说明:在chrome下面,编辑文章插入的图片,点击到图片上面,没有菜单显示. 报错: tinymce.min.js:10 Uncaught DOMException: Failed to execut ...

  9. NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load xxxx错误解决方法

    在开发项目的过程中,和后端对接,我们使用是一个成熟的集成很全面的架构JHipster.后端为java spring-boot 前端ts+react,需求是有一个需要在页面里嵌套iframe的需求.然后 ...

  10. 解决 canvas 将图片转为base64报错: Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasEleme...

    问题描述 当用户点击分享按钮时,生成一张海报,可以保存图片分享到朋友圈,用户的图片是存储在阿里云的OSS,当海报完成后,执行.canvas.toDataURL("image/png" ...

随机推荐

  1. 【C】Re05 指针

    一.变量 & 指针 变量 = 内存地址 + 存储值 指针变量 = 内存地址 + 存储值[变量的内存地址] 作用: 间接访问内存地址 内存地址 = 地址编号 地址编号:内存中的每个字节唯一的编号 ...

  2. 灵巧手 —— 智能仿生手 —— 人形机器人(humanoid)

    产品主页: https://www.brainco.cn/#/product/brain-robotics 国内销售的一款产品,美国华人生产的,灵巧度非常高的一款仿生手产品.

  3. 拜登开始在YouTube上打竞选广告了 —— 美国总统的竞选广告已经开始媒体投放了

    哈哈哈,老拜登,跑到YouTube上打广告了,这个画面真的太难想象,如果美国有"椰树"广告,估计拜登能弄个泳装上去打广告.有时不得不佩服西方搞的这种全民选举,最后搞的就和看小品似的 ...

  4. 对于强化学习算法中的AC算法(Actor-Critic算法) 的一些理解

    AC算法(Actor-Critic算法)最早是由<Neuronlike Adaptive Elements That Can Solve Difficult Learning Control P ...

  5. 基于Unity开发的强化学习环境(游戏环境):ml-agents —— Unity ML-Agents

    介绍: https://medium.com/nerd-for-tech/an-introduction-to-machine-learning-with-unity-ml-agents-af7193 ...

  6. 小样本学习(Few shot learning)标准数据集(miniImageNet、tieredImageNet、Fewshot-CIFAR100)下载地址

    以下数据集均不可商用: https://mtl.yyliu.net/download/ Please note that the splits for miniImageNet follow Ravi ...

  7. NVIDIA显卡的利用率“Volatile GPU Util"是什么???

    相关: CPU端多进程/多线程调用CUDA是否可以加速??? 如何实现nvidia显卡的cuda的多kernel并发执行??? ==================================== ...

  8. java模拟并发请求工具类(测试专用)

    1.背景 实际生产中,我们开发好接口后可能会简单的压力测试一下,也就是说模拟并发测试,测试工具类如下: 2.工具类 package tentative.normal.other; import cn. ...

  9. Python 计算几月几号是某年的第几天

    闰年需要同时满足以下条件: 1.年份能被4整除: 2.年份若是 100 的整数倍的话需被400整除,否则是平年. #!/usr/bin/python # -*- coding: UTF-8 -*- # ...

  10. 后端开发学习敏捷需求-->干系人分析与识别

    干系人分析与识别 5W1H 干系人分析与识别 1. 干系人是什么 直接或者间接影响专题,以及被专题影响的人和组织,用户也是属于干系人,是产品直接或者间接的使用者 又叫利益相关者,指积极参与专题或者在专 ...