Angular firebase 托管上的 9 个项目未能通过 https 请求

Angular 9 project on firebase hosting failed to pass https requests

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

{
  "/api": {
    "target" : "https://<domain_name>/",
    "secure": false
  }
}

通过执行

的命令,它在本地与 HTTPS POST 请求的 ssl 完美配合
ng serve --ssl true --proxy-config proxy.conf.json

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

Http failure during parsing for https://<app_name>.firebaseapp.com/api/<route_name>

您在 运行 本地环境中的 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
  }
}

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

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