Firebase云功能"您的客户端无权从此服务器获取URL / 200"

时间:2017-11-27 13:05:26

标签: firebase google-cloud-functions

我刚刚创建了一个firebase云功能:

exports.deleteAfterSevenDays = functions.https.onRequest((req, res) => {...

我部署了该函数并获得了一个函数URL。当我从浏览器请求此URL时,我收到以下消息:

  

"错误:禁止您的客户端无权获取URL / 200   来自这个服务器。"

我刚刚更新了firebase Blaze计划,因为我认为Spark计划有局限性,但它仍然无效。

在我的firebase云功能日志中写入"功能执行耗时572 ms,完成状态代码:302"。

我的cron作业"由于执行失败次数太多而被自动禁用"。

你看到了什么错了吗?

谢谢,

亚历

6 个答案:

答案 0 :(得分:22)

来自Cloud Function文档:

警告:新的HTTP和HTTP可调用函数随任何其他对象一起部署 低于版本7.7.0的Firebase CLI在默认情况下为私有,并抛出 调用时出现HTTP 403错误。明确地执行这些功能 公开,或在部署任何新版本之前更新Firebase CLI 功能。

就我而言,CLI版本已过时。如果当前收到403错误,请尝试以下操作:

  1. 删除云功能
  2. 更新Firebase CLI Source
  3. 重新部署您的功能

答案 1 :(得分:4)

如果您在2020年遇到这个问题,也可能是由于不同的访问行为造成的:

注意:自2020年1月15日起,HTTP功能需要通过以下方式进行身份验证: 默认。您可以指定函数是否允许未经身份验证 部署时或部署后调用。

https://cloud.google.com/functions/docs/securing/managing-access-iam#allowing_unauthenticated_function_invocation

答案 2 :(得分:3)

Cloud函数应该具有一个名为“所有用户”的成员的角色,以便无论授权如何,都可以在任何地方/任何地方调用此函数。

未经授权:

  1. 转到云功能选项卡
  2. 选择您的云功能(复选框)
  3. 点击右侧“权限”标签下的“添加成员”
  4. 在“新成员”下输入“ allUsers”
  5. 将角色选择为“云功能->云功能调用者”
  6. 保存
  7. 只需将其粘贴到浏览器中即可测试您的云功能

获得授权:

在云功能上设置授权始终是一个好习惯

注意:授权用户应调用“ 403禁止-您的客户端无权获取URL”引发的云函数错误。

简单测试:

  1. 单击顶部的Cloud shell(图标)终端

  2. 类型-gcloud auth打印身份令牌

  3. 复制生成的令牌

  4. 形成调用云函数时要传递的授权密钥 4.1授权:bearer generate_token

  5. 在调用您的云函数时使用上面的授权密钥

注意:

  1. 永远不要让所有用户都可以使用云功能

答案 3 :(得分:0)

将目标云功能的IAM角色(云功能调用程序)更改为 allUsers 应该可以解决此问题。 https://console.cloud.google.com/functions

答案 4 :(得分:0)

我知道这没有意义,或者不是一个真正的解决方案,但是我通过使我的帐户成为Firebase项目的Owner来解决了这个问题。我Editor时工作正常,但突然停止工作并将我的帐户设置为Owner即可解决此问题。

我想这与某些帐户具有对Service Account的正确访问有关,<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 是Firebase Functions和Google Cloud API的实际接口。

答案 5 :(得分:0)

就我而言,我在 Postman 中犯了错误 当我输入请求正文时,我没有将格式从文本切换到 JSON。

检查那个部分。