从 Angular 7 迁移到 12 后出现混合内容错误
Mixed Content error after migrating from Angular 7 to 12
堆栈:
Angular 12 与 .NET,运行 在 Docker 容器中。 @angular-devkit/build-angular:browser.
正在构建捆绑包
上次工作设置:
运行 之前在 Angular 7 上的应用程序,所有资产确实都是通过 HTTPS 提供的。
问题:
运行 通过 HTTPS 时,Angular 12 捆绑包正在提供资产,包括。 main.js、polyfill、样式表或 HTTP 上的网站图标。这会导致 bundle、polyfill、styles.css 和 favicons 出现以下错误:
Mixed Content: The page was loaded over HTTPS, but requested an
insecure X. This request has been blocked; the content must be served
over HTTPS.
我的第一个怀疑是 ng 构建过程,虽然我不知道有什么方法可以确定资产的服务方式(?)因此我提到了堆栈的其余部分以在需要时检查那里。
UPDATE:我标记了一个答案,但这是我决定采用的一种解决方法,虽然我仍然应该有一个更深入的解决方案希望能找到。
不建议在升级应用程序时跳过版本。理想的方法应该是一次升级 1 个主要版本,即 7.x -> 8.x 等等。
为了更好地理解,请遵循 Angular 的更新指南:
https://update.angular.io/
如果您直接将 Angular 7
升级到 Angular 12
那么您将收到以下错误:
"Updating multiple major versions at once is not recommended."
假设您在项目上安装了Angular 7
,现在您需要先将您的应用程序升级到Angular 8
,然后Angular 8
到Angular 9
,然后Angular 9
到 Angular 10
,然后 Angular 10
到 Angular 11
:
ng update @angular/core@6 @angular/cli@6 --force
ng update @angular/core@7 @angular/cli@7 --force
ng update @angular/core@8 @angular/cli@8 --force
ng update @angular/core@9 @angular/cli@9 --force
ng update @angular/core@10 @angular/cli@10 --force
ng update @angular/core@11 @angular/cli@11 --force
现在,您已将 Angular 7
应用程序升级到 Angular 11
,因此您将 运行 以下命令升级到最新的 Angular 12
版本:
ng update @angular/core@12 @angular/cli@12 --force
--force
已附加到 ng update
命令,以防出现 "Incompatible peer dependencies found"
错误。
编辑
将以下元标记添加到 HTML
中的 <head>
元素:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
堆栈: Angular 12 与 .NET,运行 在 Docker 容器中。 @angular-devkit/build-angular:browser.
正在构建捆绑包上次工作设置: 运行 之前在 Angular 7 上的应用程序,所有资产确实都是通过 HTTPS 提供的。
问题: 运行 通过 HTTPS 时,Angular 12 捆绑包正在提供资产,包括。 main.js、polyfill、样式表或 HTTP 上的网站图标。这会导致 bundle、polyfill、styles.css 和 favicons 出现以下错误:
Mixed Content: The page was loaded over HTTPS, but requested an insecure X. This request has been blocked; the content must be served over HTTPS.
我的第一个怀疑是 ng 构建过程,虽然我不知道有什么方法可以确定资产的服务方式(?)因此我提到了堆栈的其余部分以在需要时检查那里。
UPDATE:我标记了一个答案,但这是我决定采用的一种解决方法,虽然我仍然应该有一个更深入的解决方案希望能找到。
不建议在升级应用程序时跳过版本。理想的方法应该是一次升级 1 个主要版本,即 7.x -> 8.x 等等。
为了更好地理解,请遵循 Angular 的更新指南: https://update.angular.io/
如果您直接将 Angular 7
升级到 Angular 12
那么您将收到以下错误:
"Updating multiple major versions at once is not recommended."
假设您在项目上安装了Angular 7
,现在您需要先将您的应用程序升级到Angular 8
,然后Angular 8
到Angular 9
,然后Angular 9
到 Angular 10
,然后 Angular 10
到 Angular 11
:
ng update @angular/core@6 @angular/cli@6 --force
ng update @angular/core@7 @angular/cli@7 --force
ng update @angular/core@8 @angular/cli@8 --force
ng update @angular/core@9 @angular/cli@9 --force
ng update @angular/core@10 @angular/cli@10 --force
ng update @angular/core@11 @angular/cli@11 --force
现在,您已将 Angular 7
应用程序升级到 Angular 11
,因此您将 运行 以下命令升级到最新的 Angular 12
版本:
ng update @angular/core@12 @angular/cli@12 --force
--force
已附加到 ng update
命令,以防出现 "Incompatible peer dependencies found"
错误。
编辑
将以下元标记添加到 HTML
中的 <head>
元素:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">