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

API Gateway REST API所有GET方法返回403及HTML内容求助

问题原因及排查方案

核心原因推测

你的GET/HEAD请求在到达API Gateway之前就被拦截了,结合CloudFront返回的403错误,主要有两种可能性:

1. API Gateway资源策略未授权GET/HEAD方法调用

如果你的API Gateway配置了资源策略,且策略中仅允许POST、PATCH、DELETE、OPTIONS方法的execute-api:Invoke动作,那么GET/HEAD请求会被直接拒绝。这种情况下,请求不会进入API Gateway的处理流程,由AWS管理的CloudFront分发返回403错误,因此不会出现API Gateway的专属响应头。

2. AWS WAF规则拦截了GET/HEAD请求

若你的账户中配置了WAF Web ACL并关联到该API Gateway(或其背后的CloudFront分发),且规则中包含针对GET/HEAD请求的拦截逻辑,也会触发这个CloudFront 403错误。

排查步骤

  1. 检查API Gateway资源策略
    进入API Gateway控制台,找到目标API,查看「资源策略」页面。确认策略中的Resource字段是否包含GET/HEAD方法的ARN路径,例如:

    "Resource": "arn:aws:execute-api:eu-west-1:xxxxxx:xxxxxx/*/GET/*"
    

    若策略仅列出了其他方法,需添加GET/HEAD对应的资源路径,或使用通配符*覆盖所有方法(生产环境建议按需限制,避免过度开放)。

  2. 排查AWS WAF配置
    进入AWS WAF控制台,查看是否有Web ACL关联到该API Gateway。检查所有规则,确认是否存在拦截GET/HEAD请求的条件(例如针对请求方法的匹配规则)。

  3. 验证资源策略修改效果
    暂时修改资源策略为允许所有方法调用(仅用于测试):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:eu-west-1:xxxxxx:xxxxxx/*/*/*"
        }
      ]
    }
    

    重新部署API后测试GET请求,若恢复正常,说明原资源策略是问题根源。

补充说明

你提供的OpenAPI集成配置(GET方法使用aws_proxy并指定httpMethod: POST)是正常的,aws_proxy模式下API Gateway会将前端请求的方法、参数等完整传递给Lambda,因此这个配置不会导致GET请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:05:24