如何在https的firebase函数中获取托管URL而不是函数url

Tim*_*lis 4 firebase firebase-hosting google-cloud-functions

我已经动态生成了我需要为登台和生产环境创建的URL.我正在混合使用Firebase托管和功能.我还使用Firebase配置将网址路由到我的Firebase功能"app".当我在Firebase函数中使用req.get('host')访问我的网站时尝试获取托管网址时,我会获得功能网址.我怎样才能获得托管网址? - 触发firebase功能的url?

Dou*_*son 8

如果你检查了内容req.headers,你会发现一些感兴趣的属性:

  • host:云函数的主机,例如"us-central1-YOUR-PROJECT.cloudfunctions.net:
  • x-forwarded-host:您的Firebase托管主机,例如"YOUR-PROJECT.firebaseapp.com"
  • x-forwarded-proto:原始请求的协议,例如"https"
  • x-original-url:原始请求的URL路径,例如"/ test"

在其中三个(以"x-"开头)之间,您可以将它们连接在一起以获取原始URL.

我不知道这些标题是否完整记录和支持.

  • `x-forwarded-host` FTW!!!! 我有一个自定义域(而不是 firebaseapp.com 地址),并且正在从 `req.hostname` 中获取 `myproject.cloudfunctions.net`。然而,`req.headers['x-forwarded-host']` 给了我 `myproject.mydomain.mytld`。谢谢道格! (3认同)
  • 以下代码用于获取用户在 Bowser 中或通过 fetch 请求添加的原始 URL。`const url = \`${req.headers["x-forwarded-proto"]}://${req.headers["x-forwarded-host"]}${req.headers["x-forwarded-网址"]}\`;` (2认同)