【问题标题】:Get access to headers and raw request body in Twilio serverless function在 Twilio 无服务器函数中访问标头和原始请求正文
【发布时间】:2021-08-06 15:22:08
【问题描述】:

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

事件对象包含传递给您的函数的请求参数。 POST 和 GET 参数都将折叠到同一个对象中。对于 POST 请求,您可以传递表单编码参数或 JSON 文档;两者都将折叠到事件对象中。目前,无法在函数执行上下文中访问请求头。

这听起来好像无法获取原始请求正文。有没有办法实现这一目标?请求正文永远不会是有效的 JSON,因为它们是经过编码的,并且需要在处理程序中的业务逻辑可以执行之前进行解码。


同一 Twilio 服务中的另一个端点需要对来自 Twilio 的请求进行身份验证,因为它被设置为我们电话号码的传入 SMS 的 webhook。根据文档 (https://www.twilio.com/docs/usage/webhooks/webhooks-security),签名在请求中作为标头发送。根据上述文档的摘录,Twilio Functions 处理程序无法访问。这在 Twilio Functions 中也是不可能的吗?

【问题讨论】:

    标签: twilio twilio-api twilio-functions


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    我可以回答你的第二个问题,但我可能需要更多关于第一个问题的详细信息。

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

    Protected functions 将验证 X-Twilio-Signature 标头并仅响应具有有效签名的请求。因此,您不需要访问标头(尽管该功能正在开发中),您只需将您的功能设置为受保护。


    您能否提供有关传入 JWT 请求的更多信息?你是说整个请求体只是一个 JWT(所以是一个 base64url 编码的字符串)?随请求一起发送的 Content-Type 标头是什么?

    【讨论】:

    • 是的,整个body都是JWT。这是一个 Salesforce 请求,有关一些详细信息,请参阅此答案 - salesforce.stackexchange.com/a/174523/95742。看来Content-Typeapplication/jwt
    • 我刚刚尝试以application/jwt 格式向我的 Twilio 函数发送请求,并收到“415 不支持的媒体类型”响应。所以你将无法解码这个请求。
    猜你喜欢
    • 2015-10-19
    • 2022-07-06
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2020-07-19
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多