Playwright发送GET请求报“Parse Error: Invalid header value char”错误求助
问题排查与解决方案
核心错误原因
你用encodeURIComponent处理Bearer Token是错误操作。HTTP请求头里的Bearer Token要求直接使用原始token字符串(符合RFC 7230规范的字符),而encodeURIComponent会把token里的合法字符(比如JWT常见的/、=、+)转成%xx编码格式,这些编码后的字符不符合HTTP头值的解析规则,从而触发Parse Error: Invalid header value char。
修正步骤
1. 移除不必要的编码处理
直接使用原始token构造请求头,这是最直接的修复方式:
const headers = { 'Authorization': `Bearer ${token}`, 'Accept': 'application/json' }
2. 针对性清理token中的非法字符(如果需要)
如果token确实包含HTTP头禁止的控制字符(比如换行、制表符),不要用encodeURIComponent,而是只清理控制字符:
// 移除ASCII控制字符(0x00-0x1F 及 0x7F) const cleanedToken = token.replace(/[\x00-\x1F\x7F]/g, '').trim(); const headers = { 'Authorization': `Bearer ${cleanedToken}`, 'Accept': 'application/json' }
3. 额外排查验证
- 打印
headers.Authorization的具体值,复制到Postman中替换原来的token测试,看是否能正常请求——如果不行,说明token本身在代码中被篡改了 - 检查
token变量的获取逻辑,确认没有被意外添加换行、空格或其他特殊字符 - 确保Playwright的
request对象没有被其他代码劫持或修改请求头的逻辑
内容的提问来源于stack exchange,提问作者Pruthvi
相关产品推荐
相关产品推荐

