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

如何通过Lambda@Edge重定向POST/GET类型的API Gateway请求

问题根源

  • 你当前使用的301重定向状态码不符合POST请求的重定向需求:主流浏览器收到POST请求返回的301响应后,会自动将重定向后的请求修改为GET方法,同时丢弃原始POST的请求体数据。
  • API Gateway在收到未定义路由/未定义请求方法的请求时,会统一返回"message": "Missing Authentication Token"错误,和实际鉴权逻辑无关:你对应路径只声明了POST类型的端点,浏览器重定向过来的GET请求没有匹配的路由,自然会触发报错。

修复方案

方案1:更换重定向状态码(推荐,改造成本最低)

307/308状态码的HTTP规范明确要求:浏览器重定向时不能修改原始请求的HTTP方法,也不能丢弃请求体,完全适配POST请求的重定向场景。

  • 临时重定向用307 Temporary Redirect
  • 永久重定向用308 Permanent Redirect

修改你的Lambda@Edge代码如下:

response = {
    status: '307', // 按需替换为308即可
    headers: {
        'location': [{ 
            key: 'Location', 
            value: 'https://pgasdfddfs6.execute-api.us-east-1.amazonaws.com/dev' + uri 
        }]
    }
};

方案2:直接配置CloudFront源站(性能更优)

不要用重定向的方式转发请求,直接将你的API Gateway配置为CloudFront的源站,在CloudFront层做路径rewrite即可,这种方式不会修改请求方法、请求体,也不会产生额外的重定向开销。

额外校验项

修改状态码后如果仍然报错,可逐一排查以下配置:

  • 确认API Gateway对应路径的POST方法已经开启了正确的CORS规则,允许跨域请求
  • 确认Lambda@Edge没有过滤掉API Gateway需要的鉴权头、自定义请求头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:36:05