【发布时间】:2017-08-14 12:04:29
【问题描述】:
我需要原始请求正文能够对其进行 SHA-1 消化,以验证与请求一起传递给我的 Firebase 函数(在 Google Cloud Functions 上运行)的 Facebook webhook X-Hub-Signature 标头。
问题在于,在这种情况下(带有Content-Type: application/json 标头),GCF 使用bodyParser.json() 自动解析主体,它使用流中的数据(意味着它不能在 Express 中间件链中再次使用)并且仅将解析的 javascript 对象提供为 req.body。原始请求缓冲区被丢弃。
我试图向functions.https.onRequest() 提供一个 Express 应用程序,但这似乎是作为子应用程序运行的,或者请求正文已经被解析的东西,就像你将一个普通的请求-响应回调传递给 @987654326 @。
有什么方法可以禁止 GCF 为我解析正文?或者我可以以某种方式指定我自己的verify 回调到bodyParser.json()?还是有其他方法?
PS:一周前我第一次联系了 Firebase 支持,但由于那里没有回复,我现在在这里尝试。
【问题讨论】:
-
我的情况和你一样。我试图“重新生成”原始请求有效负载,但这是不可行的。一种安全解决方法是使用随机字符部署函数,以使端点不可猜测。我在我的文章here中详细阐述
-
现在您可以从 req.rawBody 获取原始正文。
标签: javascript firebase google-cloud-functions