我正在Firebase中开发应用程序,并在GCP中开发一些HTTPS可调用云函数(node.js)。当我创建一个Cloud Function时,Google默认将其设为私有。但是,当我尝试调用任何Cloud Function时,都会出现CORS错误,即"Access to fetch at <url of function> from origin http://localhost:4200" has been blocked by CORS policy..."
。另外,我得到一个"Unhandled Promise rejection: internal ; Zone <root>; Task..."
从其他答案中,我可以通过在云功能上设置权限来赋予allUsers
Cloud Functions Invoker
角色,从而消除这些错误。这使功能公开。因此,任何人都至少可以调用它。我了解HTTPS Callable函数还会在context
变量中发送一些身份验证详细信息,我们可以使用该身份验证对请求进行身份验证。但是,似乎仍然不安全的是任何人至少仍可以调用该函数,可能会重复调用它。
我还尝试更改功能的权限,以仅将调用者角色限制为Firebase生成的用于处理云功能的默认服务帐户,但是,我发现这没有什么不同。我也在运行最新版本的Firebase CLI。
有什么更好的方法可以使该函数的权限不那么宽松,并限制调用者的权限,同时仍然可以从firebase应用程序中调用该函数?
提前感谢所有帮助/建议。