DOMException: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'function (header, parser) { header = normalizeHeader(header);
场景:token过期,然后更新了token 重新发起请求获取数据 ;
代码:使用上一次的错误请求配置报错 return request(error.config) ;
解决 :
// 添加响应拦截器
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);的更多相关文章
- 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 ...
- 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 ...
- Uncaught (in promise) DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL
解决方案:url前面一定要加http://
- 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 ...
- DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL 未能在“xmlhttpRequest”上执行“open”:无效的URL。
出现这个报错主要是baseurl:http://192.168.*.*/后面的(/)或是请求里面的url:/user/login中前面的(/)有一个漏掉了,导致合成的路径不完整,所以报错:无效的URL
- 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 ...
- 使用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 ...
- 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 ...
- NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load xxxx错误解决方法
在开发项目的过程中,和后端对接,我们使用是一个成熟的集成很全面的架构JHipster.后端为java spring-boot 前端ts+react,需求是有一个需要在页面里嵌套iframe的需求.然后 ...
- 解决 canvas 将图片转为base64报错: Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasEleme...
问题描述 当用户点击分享按钮时,生成一张海报,可以保存图片分享到朋友圈,用户的图片是存储在阿里云的OSS,当海报完成后,执行.canvas.toDataURL("image/png" ...
随机推荐
- 使用Aspire优雅的进行全栈开发——WinUI使用Semantic Kernel调用智普清言LLM总结Asp.Net Core通过Playwright解析的网页内容
前言 这算是一篇学习记录博客了,主要是学习语义内核(Semantic Kernel)的实践,以及Aspire进行全栈开发的上手体验,我是采用Aspire同时启动API服务,Blazor前端服务以及Wi ...
- AMiner的数据质量和完善问题
最近参加到了一个国家科技项目中,这里就不吐槽这种高校承接国家科技项目是一件多么不靠谱的事情了,这里就说说我们的对标产品"AMiner".补充一下,虽然个人对AMiner的评价不是很 ...
- 使用tensorbaoardx报错——Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
运行代码报错: from tensorboardX import SummaryWriter 报错内容: 发生异常: TypeError Descriptors cannot not be creat ...
- Chrome(Google) 浏览器安装Vue2、Vue3插件方法 (亲测有效)
1.背景 2.步骤 步骤一:下载插件 网站:https://chrome.zzzmh.cn/#/search 百度网盘下载: 链接:https://pan.baidu.com/s/1xdEK-7qVx ...
- 代码随想录Day8
344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 \(O(1)\) 的额外空间解决 ...
- BossPlayersCTF靶机笔记
BossPlayersCTF靶机 靶机概述 这是vulnhub上的一个简单的linux靶机,适合初级渗透测试人员,同时也告诉我们在渗透测试过程中要有耐心,要允许有兔子洞. 靶机整体思路: 主机端口探测 ...
- SMU Spring 2023 Contest Round 7
A. Programming Contest 签到题. 输入输出读完应该就懂了: 从y1枚举到y2,若枚举的年份不在停办年份里则答案加一 void solve() { int n,m; cin > ...
- java_可变参数&增强for循环
代码比较无厘头,记录看懂的意思 在可变参数的构造方法中,需要使用增强for循环遍历 public class name { String sex; public static void main(St ...
- 我恨 gevent
报错了一晚上,最后发现是 python 版本不对.3.11,3.12,3.8,3.10 试了个遍,最后 3.10 终于编译通过了 还有这个 greenlet,每次都是它和 gevent 合着来恶心我 ...
- OpenTelemetry 实战:gRPC 监控的实现原理
前言 最近在给 opentelemetry-java-instrumentation 提交了一个 PR,是关于给 gRPC 新增四个 metrics: rpc.client.request.size: ...