在 Twilio 无服务器函数中访问 headers 和原始请求 body

Get access to headers and raw request body in Twilio serverless function

我有一个 Twilio 无服务器功能,可以处理来自另一个系统的请求,该系统通过 JWT 提供身份验证。为了解码使用 JWT 编码的请求,我需要获取原始请求 body。根据 Twilio 函数文档 (https://www.twilio.com/docs/runtime/functions/invocation) 状态:

The event object contains the request parameters passing into your Function. Both POST and GET parameters will be collapsed into the same object. For POST requests, you can pass either form encoded parameters or JSON documents; both will be collapsed into the event object. Currently, it is not possible to access request headers in the function execution context.

这听起来好像无法获取原始请求 body。有什么方法可以做到这一点?请求主体永远不会有效 JSON 因为它们是经过编码的,需要在处理程序中的业务逻辑可以执行之前进行解码。


同一 Twilio 服务中的另一个端点需要验证来自 Twilio 的请求,因为它被设置为我们 phone 号码的传入 SMS 的网络钩子。根据文档 (https://www.twilio.com/docs/usage/webhooks/webhooks-security),签名在请求中作为 header 发送。根据上面文档的摘录,无法从 Twilio 函数处理程序访问。这在 Twilio Functions 中也是不可能的吗?

这里是 Twilio 开发人员布道者。

我可以回答你的第二个问题,但我可能需要第一个问题的更多细节。

Twilio Functions have visibility settings。您可以将它们设置为 public、受保护或私有。 Public 意味着拥有 URL 的任何人都可以访问它们,私有意味着它们没有 URL 并且只能从 Functions 服务中访问。

Protected functions 将验证 X-Twilio-Signature header 并仅响应具有有效签名的请求。因此,您不需要访问 headers(尽管该功能即将推出),您只需将您的功能设置为受保护即可。


你能给我更多关于传入的 JWT 请求的信息吗?你是说整个请求 body 只是一个 JWT(所以是一个 base64url 编码的字符串)?随请求一起发送的 Content-Type header 是什么?