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

AWS API Gateway跨域问题:localhost:8080遭Access-Control-Allow-Origin拒绝

解决AWS API Gateway跨域400错误的配置方案

一、问题根因分析

你遇到的400状态码跨域错误,核心原因是请求在到达Lambda前就被API Gateway的前置校验(API密钥/JWT认证)拦截,此时你之前配置的Method Response、OPTIONS方法CORS头不会触发生效,必须针对这类前置错误场景单独配置跨域头。

二、具体配置步骤

1. 针对认证类4XX错误配置自定义网关响应

默认的4XX Gateway Response未关联具体的认证失败错误类型(比如INVALID_API_KEY、INVALID_JWT_TOKEN),需手动配置:

  • 进入API Gateway控制台,选中目标API
  • 左侧菜单选择Gateway Responses
  • 找到对应认证失败的4XX错误类型(如INVALID_API_KEY、INVALID_JWT_TOKEN),点击进入配置页
  • 在Response Headers中添加三个跨域头:
    • Access-Control-Allow-Origin:值设为*(临时调试用)或指定前端域名http://localhost:8080
    • Access-Control-Allow-Methods:值设为DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT
    • Access-Control-Allow-Headers:值设为*
  • 保存后重新部署API到对应阶段

2. 修正Lambda代理集成的响应头

由于使用了Lambda代理集成,Lambda返回的响应头会覆盖API Gateway的Method Response配置,需在Lambda代码中主动返回跨域头:
以Node.js为例,修改返回逻辑:

return {
  statusCode: 200,
  headers: {
    "Access-Control-Allow-Origin": "*", // 生产环境建议替换为具体域名
    "Content-Type": "application/json"
  },
  body: JSON.stringify(yourResponseData)
};

3. 验证OPTIONS方法的Mock集成配置

确保OPTIONS方法的集成逻辑正确:

  • OPTIONS方法的Integration request设置为Mock集成(无需调用Lambda)
  • Method responses的200状态码已包含三个跨域头,且集成响应的头映射正确关联这些头

三、关于是否允许所有来源的建议

  • 开发调试阶段(如localhost):可以暂时用*简化配置
  • 生产环境:禁止使用*允许所有来源,应指定具体的前端业务域名(如https://your-official-frontend.com)。若需支持多域名,可通过Lambda动态读取请求头的origin字段,验证白名单后返回对应域名作为Access-Control-Allow-Origin的值,降低安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:19:53