Ant*_*ano 1 amazon-web-services amazon-cloudfront aws-lambda
我在AWS Cloudfront上托管了一个静态网站。在路由上,我需要接受POST方法,因为是OAuth服务器的重定向,因此我决定开发Lambda @ edge。
我的想法是在“查看器请求”上注册lambda并拦截POST方法,读取正文并复制标头上的值,以使其可从我的静态网站读取(我知道我可以使用javascript访问Referrer标头)。
我设置了Lambda,可以拦截POST,让所有其他方法都通过。
问题是我找不到读取POST请求正文的方法,我用google搜索它没有结果。
有什么建议我可以做到吗?我必须在Cloudfront端配置任何参数吗?
查看器请求和源响应的正文不可用于 Lambda@Edge 函数,仅可使用标头。
虽然尚不完全清楚您在访问正文中的数据后要尝试做什么,但如果这是您需要的,那么这里是 AWS 解决方法:
查看 API Gateway,它确实可以访问请求正文。您可以部署 API Gateway 区域终端节点并将该终端节点作为第二个源添加到您的 CloudFront 分配。然后,您可以在源请求触发器中使用 Lambda@Edge 将这些请求转移到备用源(您的新“API”,它可以根据您POST收到的请求生成您想要的响应)。
小智 5
接受的答案是正确的,但是AWS引入了允许访问请求正文的功能。
要从请求访问它:
const body = Buffer.from(request.body.data, 'base64').toString();
Run Code Online (Sandbox Code Playgroud)
要在Cloudfront中进行配置:
| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |