【发布时间】:2019-08-10 12:24:01
【问题描述】:
我有一个前端(Angular 7,ngx-admin)和一个后端(nodeJS,express)。
问题:angular使用https,通过http与后端通信。这导致了这个问题:
Mixed Content: The page at 'https://xyz' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://0.0.0.0:56231/api/MyAPI'. This request has been blocked; the content must be served over HTTPS.
所以我当时所做的就是让后端支持 https。与此类似的东西(非常):
const app = express();
var https = require('https')
// ...
https.createServer({
}, app)
.listen(56231, function () {
console.log('Backend running on port: 56231');
})
然后将 Angular 代码(调用后端)从 HTTP 更改为 HTTPS。
return this.http.post('https://0.0.0.0:56231/api/MyAPI', form)
.map(res => res.json())
.catch(this.error);
}
很明显我错过了一些步骤......有什么灯吗?
【问题讨论】:
-
如何通过 HTTPS 为 Angular 应用程序提供服务?应用是否来自不同的服务器?
-
前端和后端位于两台不同的(虚拟)机器上,但这不相关。要点是:当前端尝试对后端执行 http.post 时,它不起作用......问题是:在 angular 和 nodejs 之间进行此工作的设置是什么?
-
不清楚当您将 API 服务器移动到 HTTPS 时什么不起作用,您没有提供这方面的任何详细信息。我询问了如何通过 HTTPS 为应用程序提供服务,因为如果应用程序通过 HTTP 提供服务,您无需更改 API 代码。您遇到“混合内容”错误,因为浏览器在安全上下文中不会尝试发出不安全的请求(例如,当您通过 HTTPS 浏览时)。无论是 HTTP 还是 HTTPS,您仍然需要在 API 中处理 CORS,因为应用程序位于不同的域中,也许这就是问题所在?
标签: node.js angular http express https