【问题标题】:Angular on NodeJS backend via HTTPS通过 HTTPS 在 NodeJS 后端上的 Angular
【发布时间】: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


【解决方案1】:

您需要更改端口。你的节点服务器在 3131 上运行。你向 56321 发送一个 post 请求

【讨论】:

  • 很好,但这里只是一个错误/错字。我确信必须在有角度的一面做些什么
  • 请将您的代码更改为您实际使用的/尝试并粘贴当前错误
猜你喜欢
  • 2021-02-28
  • 2018-07-26
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 2014-04-22
相关资源
最近更新 更多