TypeError: Failed to execute‘setRequestHeader‘ on ‘XMLHttpReguest‘: string contains non Is0-8859-1

文章讲述了在使用Vue3和vue-router跳转页面时,遇到`setRequestHeader`方法执行错误的问题,原因是跳转参数中含有中文字符,导致不符合ISO-8859-1标准。解决办法是确保参数正确编码。

vue3 vue-router 跳转页面,跳转后的页面在onMounted中调用接口请求数据,报 TypeError: Failed to execute'setRequestHeader' on 'XMLHttpReguest': string contains non Is0-8859-1 错误,手动刷新页面又没问题,网上搜索资料说是“接口请求的headers参数里有不符合 ISO-8859-1 标准的字符,所以导致设置接口headers参数的setRequestHeader方法失效,然后报错。”

排查发现是上个页面跳转参数带了中文

 

 

出现 `TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': String contains non ISO-8859-1 code point` 错误,是因为接口请求的 headers 参数里有不符合 ISO - 8859 - 1 标准的字符,导致设置接口 headers 参数的 `setRequestHeader` 方法失效[^3]。以下是一些可能的解决方案: #### 对特殊字符进行编码 在设置请求头之前,对包含特殊字符的字符串进行编码,使其符合 ISO - 8859 - 1 标准。在 JavaScript 中,可以使用 `encodeURIComponent` 函数对字符串进行编码。示例代码如下: ```javascript const specialValue = "包含特殊字符的值"; const encodedValue = encodeURIComponent(specialValue); const xhr = new XMLHttpRequest(); xhr.open('GET', 'your-url'); xhr.setRequestHeader('Your-Header-Name', encodedValue); xhr.send(); ``` #### 检查并修改请求头内容 仔细检查请求头中设置的内容,确保不包含非 ISO - 8859 - 1 字符。如果可能,尽量避免在请求头中使用特殊字符。例如: ```javascript // 错误示例 // const headerValue = "特殊字符😀"; // 正确示例 const headerValue = "普通字符"; const xhr = new XMLHttpRequest(); xhr.open('GET', 'your-url'); xhr.setRequestHeader('Your-Header-Name', headerValue); xhr.send(); ``` #### 使用 Base64 编码 如果无法避免使用特殊字符,可以考虑使用 Base64 编码对字符串进行处理。示例代码如下: ```javascript const specialValue = "包含特殊字符的值"; const base64Value = btoa(specialValue); const xhr = new XMLHttpRequest(); xhr.open('GET', 'your-url'); xhr.setRequestHeader('Your-Header-Name', base64Value); xhr.send(); ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值