Firebase 托管重写为 Cloud Functions

Firebase Hosting rewrites to Cloud Functions

我想重写所有以“api/(funcName)”结尾的URL来调用云函数(funcName)。

在firebase.json中我设置重写规则如下。

"rewrites": [
  {
    "source": "api/:funcName",
    "function": ":funcName"
  },
  {
    "source": "**",
    "destination": "/index.html"
  }
] 

但它不起作用。

我得到了

Error: Forbidden

Your client does not have permission to get URL /:funcName/api/(funcName) from this server.

(funcName) 是我不想在这里显示的真实函数名称。

我不太确定您是如何抛出该错误消息的,但据我所知,该错误消息来自 Cloud Functions,或者来自 Firebase 托管和您的 Cloud Functions 之间的某些内容。

鉴于错误消息的来源,Firebase 托管将无法为响应隐藏它。

您的重写应该包括函数的确切名称。重写系统不支持命名通配符路由,就像您在 Express 中使用的那样。如果要使用前缀通配所有 URL,请按照文档中的说明使用 glob syntax supported by Firebase Hosting

  {
    "source": "api/**",
    "function": "funcName"
  },

其中 "funcName" 是您的代码导出的函数的名称。