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

AWS API Gateway启用CORS后未返回Access-Control-Allow-Origin header求助

解决API Gateway+Lambda代理集成下CORS响应头缺失问题

当使用Lambda代理集成时,API Gateway不会自动添加CORS相关响应头——哪怕你在网关层面配置了CORS。核心原因是代理模式下,API Gateway会完全透传Lambda返回的所有响应内容,包括头信息,所以必须在Lambda函数的返回结果中手动包含CORS头。

具体解决步骤:

  1. 修改Lambda函数的返回结构,确保包含headers字段并添加Access-Control-Allow-Origin。以Python为例:
import json

def lambda_handler(event, context):
    # 处理业务逻辑
    response_data = {'message': '请求成功'}
    
    return {
        'statusCode': 200,
        'headers': {
            'Access-Control-Allow-Origin': '*',  # 也可指定具体域名,如'https://your-frontend-domain.com'
            'Access-Control-Allow-Headers': 'Content-Type, Authorization',
            'Access-Control-Allow-Methods': 'GET, POST, PUT, OPTIONS'
        },
        'body': json.dumps(response_data)
    }
  1. 处理OPTIONS预检请求:前端发起跨域请求前会发送OPTIONS预检请求,你有两种处理方式:
    • 在Lambda中判断请求方法为OPTIONS时,直接返回包含CORS头的200响应,无需执行业务逻辑
    • 在API Gateway中为OPTIONS方法单独配置非代理集成,直接返回CORS头,避免浪费Lambda资源
  2. 验证并重新部署API:确保网关层面的CORS配置(允许源、方法、头)与Lambda返回的内容一致,之后重新发布API的对应阶段,确保配置生效。

常见误区提醒:

  • 不要依赖网关层面的CORS配置自动添加头,代理模式下网关完全以Lambda返回的响应为准
  • 忽略OPTIONS预检请求会导致浏览器直接拦截跨域请求
  • 修改配置后忘记重新发布API阶段,导致新配置无法生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:57:05