如何将Postman的自定义请求头经CloudFront分发传递到API Gateway
问题根因
你当前配置的CloudFront源自定义头功能本身就是用于给所有发往源站的请求附加固定值的请求头,会直接覆盖客户端传递的同名头,因此无法获取Postman发送的动态值。
解决步骤
1. 删除源固定自定义头配置
进入CloudFront分发控制台,选择对应分发,打开「源」标签页,选中绑定的API Gateway源,编辑配置,删除你之前添加的header1固定值配置,避免固定值覆盖客户端传递的头。
2. 配置CloudFront策略透传header1
CloudFront默认不会透传所有自定义请求头,需要在缓存/源请求策略中添加白名单:
- 打开对应CloudFront分发的「行为」标签页,选中需要修改的默认行为(或对应API路径的专属行为),点击编辑
- 找到「缓存键和源请求」配置区块:
- 如果你需要按
header1的值区分缓存:找到缓存策略配置,在「缓存键设置」的「标题」下拉框选择「包括指定标题」,添加header1到列表中,该配置会同时将头透传到源站 - 如果你不需要按
header1区分缓存:单独创建或编辑现有源请求策略,在「源请求设置」的「标题」下拉框选择「包括指定标题」,添加header1到列表,再回到行为配置页绑定修改后的源请求策略即可
- 如果你需要按
- 保存行为配置,等待CloudFront分发部署完成(通常需要5-10分钟)。
3. 确认API Gateway侧配置
确保API Gateway没有拦截header1,同时Lambda集成配置支持头透传:
- 如果你使用Lambda代理集成:默认会把所有收到的请求头放入
event.headers字段,直接读取event.headers.header1即可获取值 - 如果你使用非代理集成:需要在API Gateway的集成请求配置中,新增
header1的映射规则,映射值设为method.request.header.header1
4. 测试验证
CloudFront部署完成后,用Postman发送携带header1的请求即可在Lambda中获取到动态传递的头值。
内容的提问来源于stack exchange,提问作者Anshuman
相关产品推荐
相关产品推荐

