firebase - 如何在 firebase 托管中托管单页 webapp 的静态文件,并将 web API 部署在不同的服务器中
问题描述
我有一个单页 webapp,它使用通过同一域公开的 REST API。目前,静态文件由公开 REST API 的同一服务器提供服务。
我正在尝试将服务于 firebase 托管的静态文件卸载。如果我将静态文件移动到 firebase 托管,我必须将我的域的 DNS 条目指向 firebase 托管,这将使 webapp 也向 firebase 托管发出 REST 请求。
我可以更新 web 应用程序,以便它将 REST 请求发送到当前服务器地址而不是 firebase 托管,但这会使请求变慢,因为浏览器会在发出每个请求之前使用预检请求,因为 CORS。
有谁知道如何正确解决这个问题?
解决方案
这可以使用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) => {
/...
})
推荐阅读
- node.js - 使用 API 数据将 CSV 内容附加到预定义的列
- mysql - Slick flatMap 不会将所有查询作为一个组执行
- angular - 如何在角度 8 中测试 window.innerWidth 属性?
- c# - F# 与 C# 中的反序列化
- swift - 制作中间路线和最终路线?
- ios - 将视图锚定到主视图时出现自动布局错误 - Swift
- database - 如何根据数据设置firebase实时数据库规则?
- c - 将 Led 重置为 LOW 从 Visual Studio 到 arduino
- kotlin - Kotlin 接口实现“显式”
- tomcat - 启动 SAP hybris 服务器时出现 Jrebel 问题