当前位置: 首页 > 知识库问答 >
问题:

lambda@edge读取正文POST请求

冯招
2023-03-14

我有一个静态网站托管在AWS CloudFront上。在一条路由上,我需要接受POST方法,因为它是OAuth服务器的重定向,所以我决定开发一个lambda@edge。

我的想法是在'Viewer Request'上注册lambda并截取POST方法,读取正文并复制标头上的值,以使它们在我的静态网站上可读(我知道我可以用javascript访问Referrer标头)。

我设置了Lambda,我可以截取这个帖子,让所有其他方法通过。

有什么建议我能做到吗?在Cloudfront端是否有需要配置的参数?

共有1个答案

商宏爽
2023-03-14

查看器请求和原始响应的主体对lambda@edge函数不可用--只有头部可用。

虽然现在还不完全清楚一旦您访问了身体中的数据,您想要做什么,但是如果您需要的话,下面是AWS的解决方案:

查看API Gateway,它确实可以访问请求体。您可以部署一个API网关区域endpoint,并将该endpoint作为第二个源添加到CloudFront发行版中。然后,您可以在Origin Request触发器中使用lambda@edge将这些请求转移到备用的Origin(您的新“API”,它可以根据您收到的post请求生成您想要的响应)。

 类似资料:
  • 只是为了学习目的,我使用处理程序将所有超文本传输协议请求记录到我的Web API 2应用程序。 这只是打印请求标头如下: 但是我也在POST正文中发送一个json对象,它没有打印。我想打印标题和正文。此外,我在调试时找不到任何东西在'HttpquiestMessage'对象。

  • 问题内容: 我现在使用的代码: 似乎工作正常,但我不确定在将ByteBuffer返回池之前是否需要ByteBuffer。我什至不确定要使用。文档中没有太多关于它的内容。 问题答案: 读取请求正文的一种更简单的方法是将其分派到一个工作线程,该工作线程可以使用。 有两种方法:使用或文档中所示的调度模式。这是使用的示例: 在基本上没有派遣你。

  • 他们在vertx网站上的文档不太清楚如何接收请求的正文。 我得到错误: 如果他们甚至不把它放在他们的文件里,我怎么知道该怎么称呼它...

  • 问题内容: 我正在写一个注册为Webhook端点的脚本。我知道它已成功注册,因为我正在将每个请求的标头写入服务器日志。这是一个示例: 我已经注册的API是将JSON对象发布到脚本中,我想使用PHP解析该对象。从请求标头可以看到,有一个不错的大胖JSON对象正在等待解析。看起来很简单,但事实并非如此。 最初,我尝试使用或,但是由于数据不在数组中,因此我不确定如何访问数据。 我试过使用和不使用,但没有

  • 问题内容: 我正在写一个注册为Webhook端点的脚本。我知道它已成功注册,因为我正在将每个请求的标头写入服务器日志。这是一个示例: 我已注册的API将JSON对象发布到脚本中,我想使用PHP解析该对象。从请求标头中可以看到,有一个不错的大胖JSON对象正在等待解析。看起来很简单,但事实并非如此。 起初,我尝试使用或,但是由于数据不在数组中,因此我不确定如何访问数据。 我试过使用和不使用,但没有运

  • 我有一个用Java编写的AWS Lambda函数,它由AWS API网关调用触发。 我试图向其中一个endpoint发出请求,并使用JSON作为有效负载。 然后,网关将检测,并通过默认模板传递所有请求参数(包括正文)。有趣的是这一部分 它应该给我一张