【问题标题】:google cloud function can't be called from postman where unauthenticated is allowed无法从允许未经身份验证的邮递员调用谷歌云功能
【发布时间】:2021-03-10 14:17:04
【问题描述】:

我有以下简单的谷歌云功能:

exports.recordInfo = functions.https.onRequest(async(request, response) => {
      functions.logger.info({
        requestData: request.body.data
      })
      functions.logger.info("Hello logs!", {
        structuredData: true
      });
      response.send("Hello from Firebase!");
    });

我可以让它在模拟器中运行并获得一个本地主机链接,我可以在我的浏览器中看到响应。我无法测试从邮递员发送请求数据。相同的链接只是挂起而没有响应。我已经尝试在模拟器和部署的函数中使用 request、request.body 和 request.rawBody。

我正在尝试寻找像邮递员这样的平台来发送包含以下对象的请求:

{
      'data': {
        'objID': 'abc123',
        'objName': 'obj1',
        'objDescription': 'object'
      }
}

最终目标是将此对象记录为数据库中的firestore文档,但现在我只想能够确保我可以在云功能中看到并记录该对象。

当我查看函数 url 时得到的唯一响应是“Hello from Firebase”。我还看到了“你好日志!”模拟器日志以及与已部署函数关联的日志中的语句。我在部署的云功能日志中没有看到带有“structuredData”键的对象。

【问题讨论】:

  • 如果请求挂起,则不涉及身份验证。编辑显示请求和响应的问题。另一个出色的工具是命令行中的curl
  • 请编辑问题以更详细地描述您正在做的事情并没有按您期望的方式工作。问题中应该有足够的信息,任何人都可以复制问题并观察到相同的结果。我建议阅读这篇文章以帮助了解问题的有用之处:stackoverflow.com/help/minimal-reproducible-example
  • 嗨,欢迎来到 Stack Overflow!请不要将堆栈 sn-p 用于不可运行的代码。 Stack sn-ps 仅适用于可在浏览器上运行的 HTML、CSS 和 JavaScript 代码。请改用code block 格式化您的代码。
  • @JohnHanley 我把我所知道的关于请求和响应的信息都放在了上面,我对编码几乎和对 stackoverflow 一样陌生。
  • 我的意思是展示你如何提出请求和结果。

标签: javascript node.js google-cloud-platform google-cloud-functions postman


【解决方案1】:

我能够通过对函数 URL 的发布请求以及正文中提供的数据对象来重现该问题。

问题是您需要使用 CORS 库才能使请求正文可访问,如 this example onRequest function 中所示,在此 google documentation on HTTP requests 中引用。

【讨论】:

    猜你喜欢
    • 2020-07-31
    • 2020-11-27
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2021-11-08
    • 2021-07-09
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多