混合内容:“domain”处的页面是通过 HTTPS 加载的,但在 Angular 中请求了不安全的 HTTP 端点

问题描述 投票:0回答:2

我在端口 4200 上使用带有 SSL 的域部署了我的 angular 应用程序,该域与同一服务器和端口 3000 上的 API 进行通信。现在的问题是,当我将 BASE_URL 作为带有 HTTP 的 IP 时,它工作正常,但是当使用 HTTP 时,它会给出混合内容 HTTPS 到 HTTP 错误。我也尝试了代理配置方法,但它不起作用。有没有办法通过本地IP(127.0.0.1)而不是服务器IP与同一服务器通信? CORS 已在 API 端(Node.js)启用

Mixed-Content: the page at 'domain' was loaded over HTTPS, but requested an insecure HTTP endpoint in Angular

node.js angular https mixed-content
2个回答
0
投票

据我所知,我认为从 https URL 加载 http API 将会被阻止,总是如此。

如果您不介意重构代码以允许可配置的 api 端点,而不是总是使用 http://localhost:3000。您将有多种选择将您的 http API 转换为 HTTPS。

  1. 你可以尝试ngrok。它可以让您将 http 服务转换为 https,而无需设置 Web 服务器、证书...等。

    免费版本不会有稳定的域名。每次启动新的 ngrok 会话时都会有所不同。尽可能长时间地保持会话,这样您就不必担心经常更改名称。恕我直言,这应该足够发展了。

  2. 您还可以为您的 API 设置自签名证书。如果您的 API 服务器不支持 HTTPS 模式,您必须安装一个可以处理 HTTPS 请求并将其代理到您的 api 的 Web 服务器。

    使用 docker 可以非常轻松地进行安装。证书有点复杂,不过网上有指导。

  3. 或者,您可以在 HTTP 模式下运行 Angular 服务器。它应该可以修复警告,但风险更大,因为开发环境与生产环境有很大不同,这可能会给您部署时带来惊喜。所以不太推荐。


0
投票

试试这个:

 ngrok http 3000 --response-header-add Content-Security-Policy:upgrade-insecure-requests
© www.soinside.com 2019 - 2024. All rights reserved.