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

Express.js自定义Auth Header异常致Python客户端JSON解析失败

问题分析与解决思路

报错JSONDecodeError: Expecting value: line 1 column 1 (char 0)明确说明:Python客户端收到的响应内容是空的,或者内容并非有效的JSON格式开头。结合你的代码,从以下几个方向排查:

1. 确认Express是否真的进入了返回JSON的分支

虽然控制台打印了"Sent",但先做这两步验证:

  • 用curl或Postman手动发送请求:带上Auth:2DDR头访问你的GET接口,查看返回内容是否为有效JSON。示例curl命令:
    curl -H "Auth: 2DDR" http://你的服务器地址/
    
  • 检查presentRequest函数的实现:HTTP头在Express中默认是小写的,如果函数里写的是req.headers.Auth,必须改成req.headers.auth或者req.get('Auth')——否则Auth判断不成立,根本没进入res.json(data)分支,返回的是默认空响应。

2. 验证gamedata.json的有效性

  • 打开gamedata.json,检查是否存在JSON语法错误:比如末尾多余逗号、引号不配对、括号不闭合等。Node.js的require加载JSON时若有语法错误,会抛出异常,若Express未做错误捕获,会导致请求无响应或返回空内容。
  • 直接复制JSON内容到编辑器的JSON校验功能,确认文件格式合法。

3. 检查Python自定义请求类的实现

  • 在Python代码中先打印response.text,查看实际收到的响应内容:如果是空字符串,说明服务器没返回数据;如果是其他非JSON内容,再针对性排查。
  • 确保请求头的键名是'Auth'(注意大小写),和服务器端的获取逻辑匹配。

4. 临时调试方案

先跳过Auth验证,直接返回数据,定位问题环节:

app.get('/', (req, res) => {
    res.json(data);
    console.log("Sent data:", data); // 打印要发送的data,确认不是空值或无效值
})

如果此时Python能正常解析,说明是Auth验证逻辑有问题;如果还是报错,大概率是gamedata.json文件损坏或路径错误,导致require加载的data为空。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:22:56