我在端口 4200 上使用带有 SSL 的域部署了我的 angular 应用程序,该域与同一服务器和端口 3000 上的 API 进行通信。现在的问题是,当我将 BASE_URL 作为带有 HTTP 的 IP 时,它工作正常,但是当使用 HTTP 时,它会给出混合内容 HTTPS 到 HTTP 错误。我也尝试了代理配置方法,但它不起作用。有没有办法通过本地IP(127.0.0.1)而不是服务器IP与同一服务器通信? CORS 已在 API 端(Node.js)启用
据我所知,我认为从 https URL 加载 http API 将会被阻止,总是如此。
如果您不介意重构代码以允许可配置的 api 端点,而不是总是使用 http://localhost:3000。您将有多种选择将您的 http API 转换为 HTTPS。
你可以尝试ngrok。它可以让您将 http 服务转换为 https,而无需设置 Web 服务器、证书...等。
免费版本不会有稳定的域名。每次启动新的 ngrok 会话时都会有所不同。尽可能长时间地保持会话,这样您就不必担心经常更改名称。恕我直言,这应该足够发展了。
您还可以为您的 API 设置自签名证书。如果您的 API 服务器不支持 HTTPS 模式,您必须安装一个可以处理 HTTPS 请求并将其代理到您的 api 的 Web 服务器。
使用 docker 可以非常轻松地进行安装。证书有点复杂,不过网上有指导。
或者,您可以在 HTTP 模式下运行 Angular 服务器。它应该可以修复警告,但风险更大,因为开发环境与生产环境有很大不同,这可能会给您部署时带来惊喜。所以不太推荐。
试试这个:
ngrok http 3000 --response-header-add Content-Security-Policy:upgrade-insecure-requests