使用自定义域进行 Firebase 函数 http 调用

问题描述 投票:0回答:4

有没有办法为 firebase 云函数 http 挂钩使用自定义域。

云函数的默认 url 如下所示:

https://us-central1-my-awesome-app.cloudfunctions.net/ios-oauth/

还有

我想让它看起来像这样:

https://myawesomeapp.com/ios-oauth/

我环顾四周,是否还有其他人在寻找相同的解决方案,果然我发现了这个:

https://stackoverflow.com/questions/43482224/firebase-cloud-functions-custom-domain

firebase dns google-cloud-functions
4个回答
60
投票

我已联系 Firebase 支持以获得有关此问题的一些答案。 我被转发到文档中的这一部分。

https://firebase.google.com/docs/hosting/functions#create_an_http_function_to_your_hosting_site

您可以将自己的域与 firebase-cloud-functions 一起使用。方法是使用 firebase-hosting。

  1. 将自定义域连接到 firebase 托管

  2. 将自定义函数路由添加到 firebase.json

     {
       "hosting": {
         "public": "public",
    
         // Add the following rewrites section *within* "hosting"
         "rewrites": [{
           "source": "/bigben", "function": "bigben"
         }]
    
       }
     }
    
  3. 部署到 firebase


27
投票

接受的答案是正确的,我去年创建了这个存储库来演示功能:https://github.com/cjmyles/firebase-react-express

为了按照https://firebase.google.com/docs/hosting/full-config#rewrites保留 HTML PushState 功能,您可能需要扩展规则以允许所有其他请求通过您的index.html页面,解决了 @Boris 在他的回答中面临的问题。

"rewrites": [
    {
        "source": "/api/**",
        "function": "app"
    },
    {
        "source": "!/@(api)/**",
        "destination": "/index.html"
    }
]

实际上并不需要这样做,因为重写规则旨在匹配请求的第一次出现(因此顺序很重要),但这对我来说很有效,允许所有非 api 相关的请求通过。

请注意: 在撰写本文时,Firebase 文档 指出:Firebase 托管仅支持 us-central1 中的云功能。


4
投票

如果其他人遇到这个问题,Thomas Bulva 的答案是正确的,但对我来说,我还必须从 firebase.json 文件中删除以下代码片段。 .

它将任何请求重定向到index.html 页面。我的 https://us---<>.cloudfunctions.net URL 工作正常;当我执行 /helloWorld 时,它会将我带到“Hello from Firebase!”但如果我从自定义域中尝试相同的操作,就会失败。删除这个修复了它。

{
   "source": "**",
   "destination": "/index.html"
},

0
投票

2024 更新

如果有人还在看这里,重写 API 已更改为:

        {
            "source": "/api/function1",
            "function": {
                "functionId": "function1"
            }
        }
        {
            "source": "!/@(api)/**",
            "destination": "/index.html"
        },
        

请参阅此处。 我仍然没有找到一种方法将 All 功能重新路由到

/api/
,所以目前我正在将它们一一路由。

附注 截至目前(2024年)有5个地区支持托管功能:

  • us-west1
  • 美国中央1
  • 美国东部1
  • 欧洲西部1
  • 亚洲-东部1
© www.soinside.com 2019 - 2024. All rights reserved.