You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Axios请求时出现Authorization请求头含无效字符报错如何解决?

报错原因
  • 现有密钥验证逻辑错误:你使用的正则/\t\r\n/.test()实际是校验字符串是否连续同时存在制表符、回车、换行三个字符,而非校验是否存在其中任意一种,验证结果完全不可靠,无法证明密钥没有空白控制字符。
  • 密钥包含未覆盖校验的不可见字符:复制粘贴密钥时很容易带入零宽空格(\u200B)、零宽不连字符(\u200C)、不间断空格(\u00A0)、UTF-8 BOM头(\uFEFF)等隐藏控制字符,这些字符不在你当前的正则匹配范围内,但属于HTTP头禁止使用的非法字符。
  • 低版本axios的header校验规则存在缺陷,会误判部分合规JWT字符串中的字符为非法字符。
  • 拼接Authorization头时可能混入异常字符:比如Bearer 后的空格不是普通半角空格,或者拼接逻辑意外引入了其他符号。
修复方案
  • 修正密钥校验逻辑,过滤所有非法控制字符:
    将原有测试代码替换为以下内容,先确认是否存在非法字符,再直接过滤:
// 校验是否包含所有常见的非法控制字符
console.log(/[\x00-\x1F\x7F-\xA0\u200B-\u200D\uFEFF]/.test(api_config.API_KEY));
// 直接过滤所有非法控制字符
api_config.API_KEY = api_config.API_KEY.replace(/[\x00-\x1F\x7F-\xA0\u200B-\u200D\uFEFF]/g, '');
  • 拼接Authorization头时主动去除密钥首尾空白:
    修改header配置如下:
const connectionConfig = {
    headers: {
        'Authorization': 'Bearer ' + api_config.API_KEY.trim()
    }
}
  • 若上述操作无效,尝试将axios升级到最新稳定版,排除版本自带的校验bug。
  • 特殊场景下可以对Authorization头整体做URI转义处理:
headers: {
    'Authorization': encodeURI('Bearer ' + api_config.API_KEY)
}

内容的提问来源于stack exchange,提问作者Shawn Stensberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:39:04