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

AWS API Gateway集成Lambda时GET请求丢失Authorization头问题咨询

AWS API Gateway GET请求Authorization头丢失问题排查

问题描述

我在AWS API Gateway中配置了GET、POST、DELETE三类端点,每个端点均集成Lambda并调用对应Python函数。未使用AWS官方授权器,而是手动实现授权逻辑:调用端点时在Authorization请求头中携带Bearer令牌,Lambda函数通过event["headers"]["Authorization"]获取令牌。

该授权方式在POST和DELETE端点上运行正常,但调用GET端点时,event["headers"]对象中完全缺失Authorization头,仅存在AWS自动添加的其他请求头。我已尝试多种调用方式,且排除了大小写问题——令牌在整个event对象中均无法找到。

所有端点在API Gateway中的配置如下:

  • 方法请求:API Gateway方法请求配置
  • 集成请求:API Gateway集成请求配置

请问API Gateway或Lambda会自动移除GET请求的Authorization头吗?


问题解答

核心结论

API Gateway默认不会主动移除GET请求的Authorization头,该问题大概率由配置遗漏或外部因素导致。

具体排查与解决方案

  1. 检查方法请求的头白名单配置
    API Gateway默认只会传递在「方法请求」中声明过的请求头。如果GET方法的「方法请求」未添加Authorization作为允许的请求头,API Gateway会自动丢弃该头,不会传递给Lambda。

    • 操作步骤:进入API Gateway控制台 → 选中对应GET方法 → 点击「方法请求」→ 「添加请求头」→ 输入Authorization并保存配置。
  2. 验证集成请求的头映射规则
    若使用Lambda代理集成(从截图判断属于该模式),默认会传递所有请求头,但如果手动配置了「集成请求」的HTTP头映射,可能误过滤了Authorization头。

    • 检查路径:API Gateway控制台 → 对应GET方法 → 「集成请求」→ 「HTTP头」,确认未对Authorization设置排除或未映射规则。
  3. 排查API缓存影响
    若API Gateway开启了缓存功能,可能缓存了不带Authorization头的历史请求响应。可临时关闭缓存后重新测试GET请求,验证头是否能正常传递。

  4. 排除客户端/中间件问题
    部分HTTP客户端或代理工具存在不符合规范的行为,会默认移除GET请求的Authorization头。建议用curl工具直接发起测试,排除客户端因素:

    curl -H "Authorization: Bearer YOUR_TOKEN" https://your-api-id.execute-api.region.amazonaws.com/stage/your-get-endpoint
    

    同时在Lambda函数中打印完整event对象,确认头是否存在。

  5. 查看API Gateway访问日志
    开启API Gateway的访问日志功能,查看请求到达API Gateway时是否携带了Authorization头:

    • 若日志中无该头,说明请求在到达API Gateway之前就丢失了头(如CDN、代理层过滤);
    • 若日志中有该头但Lambda未收到,需重新检查API Gateway的方法请求和集成请求配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:40:20