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

2018年AWS Lambda代理集成场景下如何获取请求头?

解决AWS代理集成下获取x-requested-with请求头的问题

我完全懂你现在的困扰——之前用Mapping Template拿请求头好好的,切换到AWS推荐的代理集成后,明明CloudWatch日志里能看到x-requested-with存在,可代码里就是拿不到,各种对象调用都显示未定义,确实挺挠头的。

下面分两种最常见的代理集成场景给你说解决办法:

一、如果是Lambda代理集成

Lambda代理集成的事件结构里,请求头是直接挂在顶层event对象的headers属性下的,但有个容易踩的坑:API Gateway会把所有请求头的键转换成小写。也就是说,前端传的X-Requested-With到了Lambda里会变成x-requested-with,如果你用大写的键去访问肯定找不到。

举个Python Lambda的示例代码,稳妥的写法是这样:

def lambda_handler(event, context):
    # 用get方法避免键不存在时报错
    requested_with_header = event.get('headers', {}).get('x-requested-with')
    
    if requested_with_header:
        print(f"成功获取X-Requested-With头:{requested_with_header}")
    else:
        print("未找到X-Requested-With头")
    
    # 你的业务逻辑...
    return {
        'statusCode': 200,
        'body': '请求处理完成'
    }

另外,如果你的请求头可能有多个值(虽然x-requested-with一般不会),可以去event.multiValueHeaders里找,用法和headers类似。

二、如果是HTTP代理集成(直接代理到后端HTTP服务)

这种情况下,API Gateway默认不会把所有请求头都传递给后端,需要你手动配置头映射:

  • 打开API Gateway控制台,找到你的API和对应的资源、方法
  • 进入「集成请求」设置,找到「HTTP头」部分
  • 点击「添加头」,源填method.request.header.x-requested-with,目标填x-requested-with(保持和原头名一致)
  • 保存并重新部署API到对应的阶段

这样配置后,API Gateway就会把x-requested-with头完整传递给后端服务了。另外要注意,后端接收时也要用小写的头名去获取,因为API Gateway会自动转成小写。

最后排查小技巧

  • 再去CloudWatch日志里确认下event的完整结构,看看headers里到底有没有x-requested-with(有时候可能是前端传头时拼写错误)
  • 如果是Lambda集成,别搞错了路径——是event.headers,不是event.request.headers或者其他嵌套路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:46:51