我需要原始请求正文才能对其进行 SHA-1 消化,以验证随请求一起传递到我的 Firebase 函数(在 Google Cloud Functions 上运行)的 Facebook webhook X-Hub-Signature header 。
问题是在这种情况下(使用 Content-Type: application/json
header )GCF 使用 bodyParser.json()
自动解析正文,它消耗来自流的数据(意味着它不能在 Express 中间件链下再次使用)并且只提供解析的 javascript 对象作为 req.body
。原始请求缓冲区被丢弃。
我试图为 functions.https.onRequest()
提供一个 Express 应用程序,但它似乎是作为子应用程序运行的,或者请求主体已经被解析的东西,就像当您将一个简单的请求-响应回调传递给 onRequest()
。
有什么方法可以禁止 GCF 为我解析正文吗?或者我可以以某种方式指定我自己的 verify
回调到 bodyParser.json()
吗?还是有别的办法?
PS:我在一周前就此问题首次联系了 Firebase 支持人员,但由于那里没有回应,我现在在这里尝试。
最佳答案
现在您可以从req.rawBody
获取原始主体。它返回 Buffer
。参见 documentation了解更多详情。
感谢 Nobuhito Kurose 在 comments 中发布此内容.
关于javascript - 如何在 Google Cloud Function 中获取原始请求正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42950561/