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

AWS API Gateway调用报Unexpected end of JSON input错误排查求助

问题排查方案

关于Unexpected end of JSON input错误的常见原因

这个错误本质是前端尝试解析空响应或非JSON格式内容导致的,结合你的场景,重点排查以下两点:

1. Lambda函数返回格式不规范

API Gateway控制台的测试逻辑和前端请求的处理逻辑不同,Lambda必须返回API Gateway要求的标准响应格式,否则前端会拿到无效响应。
正确的Node.js Lambda返回示例:

exports.handler = async (event) => {
  // 从DynamoDB获取数据的逻辑
  const productData = await yourDynamoDBQueryFunction(event.queryStringParameters.productId);
  
  // 必须返回包含statusCode、headers、JSON序列化body的结构
  return {
    statusCode: 200,
    headers: {
      "Access-Control-Allow-Origin": "*", // 测试阶段临时允许所有跨域请求
      "Content-Type": "application/json"
    },
    body: JSON.stringify(productData) // 务必用JSON.stringify把对象转成字符串
  };
};

如果你的Lambda直接返回原始对象(比如return productData),API Gateway无法正确处理,会返回空或非JSON响应,导致前端解析失败。

2. CORS配置问题(可能间接触发该错误)

正常的CORS报错会在浏览器控制台显示类似No 'Access-Control-Allow-Origin' header is present on the requested resource的提示,但如果CORS配置错误导致浏览器直接拦截响应内容,前端拿到空数据,调用response.json()时就会触发Unexpected end of JSON input错误。

具体排查步骤

  • 第一步:检查Lambda返回结构
    确认Lambda返回的是上述标准格式,重点核对body是JSON序列化后的字符串,同时包含跨域相关headers。
  • 第二步:用浏览器DevTools查看实际请求
    打开浏览器F12进入Network面板,调用fetchData函数后找到对应请求:
    • 查看Response标签,确认返回内容是合法的JSON字符串;如果为空,说明API未返回有效数据。
    • 查看Headers标签,检查是否存在Access-Control-Allow-Origin头;如果没有,说明CORS配置有问题。
  • 第三步:重新配置并部署API Gateway的CORS
    在API Gateway控制台找到你的product资源:
    • 点击Actions -> Enable CORS
    • 允许的源(Allowed Origins)填*(测试用,正式环境替换为你的前端域名)
    • 允许的方法(Allowed Methods)勾选GET
    • 配置完成后必须点击Deploy API,选择你的部署阶段(stage),否则配置不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:32:18