AWS API Gateway集成Lambda时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或Lambda会自动移除GET请求的Authorization头吗?
问题解答
核心结论
API Gateway默认不会主动移除GET请求的Authorization头,该问题大概率由配置遗漏或外部因素导致。
具体排查与解决方案
检查方法请求的头白名单配置
API Gateway默认只会传递在「方法请求」中声明过的请求头。如果GET方法的「方法请求」未添加Authorization作为允许的请求头,API Gateway会自动丢弃该头,不会传递给Lambda。- 操作步骤:进入API Gateway控制台 → 选中对应GET方法 → 点击「方法请求」→ 「添加请求头」→ 输入
Authorization并保存配置。
- 操作步骤:进入API Gateway控制台 → 选中对应GET方法 → 点击「方法请求」→ 「添加请求头」→ 输入
验证集成请求的头映射规则
若使用Lambda代理集成(从截图判断属于该模式),默认会传递所有请求头,但如果手动配置了「集成请求」的HTTP头映射,可能误过滤了Authorization头。- 检查路径:API Gateway控制台 → 对应GET方法 → 「集成请求」→ 「HTTP头」,确认未对
Authorization设置排除或未映射规则。
- 检查路径:API Gateway控制台 → 对应GET方法 → 「集成请求」→ 「HTTP头」,确认未对
排查API缓存影响
若API Gateway开启了缓存功能,可能缓存了不带Authorization头的历史请求响应。可临时关闭缓存后重新测试GET请求,验证头是否能正常传递。排除客户端/中间件问题
部分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对象,确认头是否存在。查看API Gateway访问日志
开启API Gateway的访问日志功能,查看请求到达API Gateway时是否携带了Authorization头:- 若日志中无该头,说明请求在到达API Gateway之前就丢失了头(如CDN、代理层过滤);
- 若日志中有该头但Lambda未收到,需重新检查API Gateway的方法请求和集成请求配置。
内容的提问来源于stack exchange,提问作者pauliner

