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

在AWS SAM中配置CORS遇阻:全局配置后仍无法生效

解决SAM配置全局CORS不生效的问题

我之前也碰到过一模一样的SAM全局CORS配置不生效的坑,给你几个亲测有效的排查和解决方向:

1. 先确认你的SAM CLI版本是否支持全局CORS

全局CORS是从SAM CLI 1.10.0版本开始引入的,老版本根本不识别这个配置。先跑命令查版本:

sam --version

如果版本低于1.10.0,赶紧升级:

pip install --upgrade aws-sam-cli

别小看版本问题,我之前就是因为本地用了老版本,改了模板完全没效果,折腾了半天。

2. 修正全局CORS的语法错误

你写的Cors: "'*'"多了一层不必要的单引号嵌套,正确的写法分两种:

  • 简单通配符配置(允许所有来源):
    Globals:
      Api:
        Cors: "*"
    
  • 更严谨的多参数配置(推荐,适合生产环境):
    Globals:
      Api:
        Cors:
          AllowOrigin: "'*'"
          AllowMethods: "'GET,POST,OPTIONS'"
          AllowHeaders: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'"
    

注意这里的单引号是必须的,因为SAM会把这些值直接传递给API Gateway的CORS配置,需要作为字符串整体解析。

3. 必须处理OPTIONS请求!

即使API Gateway配置了CORS,如果你的Lambda函数没有正确响应OPTIONS预检请求,浏览器还是会报CORS错误。最简单的方式是在Lambda代码里加一个OPTIONS分支:
比如Python示例:

def lambda_handler(event, context):
    # 处理OPTIONS预检请求
    if event["httpMethod"] == "OPTIONS":
        return {
            "statusCode": 200,
            "headers": {
                "Access-Control-Allow-Origin": "*",
                "Access-Control-Allow-Methods": "GET,POST,OPTIONS",
                "Access-Control-Allow-Headers": "Content-Type,Authorization"
            },
            "body": ""
        }
    
    # 你的正常业务逻辑
    return {
        "statusCode": 200,
        "headers": {
            "Access-Control-Allow-Origin": "*"
        },
        "body": "Success!"
    }

如果用的是其他语言,逻辑是一样的:先判断请求方法,OPTIONS请求直接返回带CORS头的200响应。

4. 重新部署并验证配置

修改模板后,一定要彻底重新部署,不要用增量更新:

sam deploy

部署完成后,去AWS控制台的API Gateway里验证:

  • 进入你的API -> 任意一个资源端点 -> 点击「操作」->「启用CORS」,看看弹出的配置是不是和你全局设置的一致
  • 或者直接测试OPTIONS请求,用curl:
    curl -X OPTIONS https://your-api-id.execute-api.region.amazonaws.com/Prod/your-endpoint -H "Origin: https://your-frontend-domain.com" -v
    

看响应头里有没有Access-Control-Allow-Origin等正确的CORS头。

5. 本地开发的话,用SAM Local测试

本地调试时,用sam local start-api启动服务,然后用curl测试OPTIONS请求,这样能快速排查本地配置是否生效,不用每次都部署到AWS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:03