Firebase 托管上的 Angular 9 项目无法通过 https 请求

Rav*_*tha 3 https proxy firebase-hosting angular

我在我的 angular 项目中使用了代理,如下所示。

{
  "/api": {
    "target" : "https://<domain_name>/",
    "secure": false
  }
}
Run Code Online (Sandbox Code Playgroud)

通过执行以下命令,它可以在 ssl 本地完美地用于 HTTPS POST 请求,

ng serve --ssl true --proxy-config proxy.conf.json
Run Code Online (Sandbox Code Playgroud)

但是在我将它托管到 firebase 托管之后,它总是在每个 POST 请求中给出以下错误。

Http failure during parsing for https://<app_name>.firebaseapp.com/api/<route_name>
Run Code Online (Sandbox Code Playgroud)

Shr*_*van 5

您在本地环境中运行 Angular 应用程序以重定向某些 URL 段时包含的代理配置文件是 Angular 开发服务器提供的一项功能。

由于您使用的是 firebase,firebase 还提供了类似的重定向功能,可以在firebase.json文件中进行配置。由于您使用 firebase 进行部署,我假设您已经有一个 firebase.json 文件。如果没有,请访问Firebase CLI官方文档以将其安装在您的本地环境中。现在运行firebase init命令将生成一个基本的 firebase.json 文件。

包括重定向选项,如下例所示:

firebase.json

"hosting": {
  // ... other configurations ...
  "redirects": [ {
    "source": "/api/:path*",
    "destination": "https://<gcp_domain_name>/:path",
    "type": 301
  }
}
Run Code Online (Sandbox Code Playgroud)

让我们分解一下我们刚刚做的事情。source 属性将 URL 段作为 Firebase 执行重定向的值。:path*指定/api应该捕获并存储在变量之后的任何 URL 段:path。现在在目标属性中,指定目标域,然后/:path执行重定向。type 属性指定Http 响应代码 301来表示永久重定向(在您的情况下)。您可以在重定向数组中添加多个重定向。

有关 Firebase 中重定向配置的更多信息,请参阅Firebase 官方文档中的此页面。除了重定向之外,您还可以找到可以在 Firebase 托管中配置的所有选项。