首页 > 解决方案 > 如何在 firebase 托管中托管单页 webapp 的静态文件,并将 web API 部署在不同的服务器中

问题描述

我有一个单页 webapp,它使用通过同一域公开的 REST API。目前,静态文件由公开 REST API 的同一服务器提供服务。

我正在尝试将服务于 firebase 托管的静态文件卸载。如果我将静态文件移动到 firebase 托管,我必须将我的域的 DNS 条目指向 firebase 托管,这将使 webapp 也向 firebase 托管发出 REST 请求。

我可以更新 web 应用程序,以便它将 REST 请求发送到当前服务器地址而不是 firebase 托管,但这会使请求变慢,因为浏览器会在发出每个请求之前使用预检请求,因为 CORS。

有谁知道如何正确解决这个问题?

标签: firebasefirebase-hosting

解决方案


这可以使用Hosting Config来处理,特别是使用重定向,您可以将 location/foo作为静态 url 路径并让它从/bar

"hosting": {
  // ...

  // Returns a permanent redirect to "/bar" for requests to "/foo" (but not "/foo/**")
  "redirects": [ {
    "source": "/foo",
    "destination": "/bar",
    "type": 301
  } ]
}

如果您需要使用重写来处理云功能,还有其他选择,我怀疑组合将满足您的需求。请查看文档中的完整示例以供参考。

更新:

要设置没有 cors 的 API 路由 - 您可以执行以下操作

app.get("/apiPath", cors({origin: false}), (req, res) => {
  /...
})

推荐阅读