【问题标题】:Local server http communication and angular browser rendering本地服务器 http 通信和 Angular 浏览器渲染
【发布时间】:2019-10-27 00:54:16
【问题描述】:

我认为我的做法完全错误。

我有一个运行在数据库中的 Nodejs 服务器,并在本地通过 http 提供一些数据(它只能在本地访问)。它通过某个端口(例如 8080)在 localhost 上发送数据。然后我在服务器上有一个角度应用程序,它从 localhost:8080 上的 http 请求获取这些数据并显示它们。 Angular 应用在​​ localhost:4200 本地运行。

我在我的计算机上构建了所​​有东西,并且运行良好(我对 CORS 没有任何问题)。然后我将它部署在服务器上,并通过 ssh 端口转发访问它。基本上我通过 ssh 在我的本地计算机上的 localhost:8090 上转发服务器上的 localhost:4200。

我的问题是,当通过端口重定向在我的浏览器中加载和执行 Angular 应用程序时,它正在向 localhost:8080 发出获取请求。所以它试图与运行它的本地主机通信,也就是客户端本身。

如果你理解我的意大利面情况,其实有一个肮脏的解决方案:将服务器上的 localhost:8080 重定向到客户端上的 localhost:8080。

有没有办法在服务器端而不是在客户端的浏览器中进行获取请求,以便 localhost 对应于服务器?有没有更好的方法来做我想做的事情?

我可以总结为:如何使用 Angular 应用程序访问服务器上 localhost 上的另一个本地服务,因为它在客户端浏览器中执行,并且 localhost 将引用客户端 localhost。

【问题讨论】:

    标签: node.js angular


    【解决方案1】:

    尝试在您的服务器中使用任何Web服务器(例如nginx或apache2等)并在您的节点应用程序中使用代理和反向代理,它会起作用

    angular2-router-and-express-integration

    【讨论】:

    • 我将您的解决方案与开发工具上的代理配置一起应用(使用 --proxy-config 选项),它就像一个魅力!非常感谢!我真的不明白代理如何使这成为可能,但它确实有效!我只是很难在生产环境中配置 nginx 来完成这项工作,但我希望它会成功!
    • 您需要配置(设置代理和反向代理)路由如下 1.“/”到“localhost:4200/”(以便您的 Angular 应用程序将在端口 80 上运行)2.在 Angular应用程序将您的请求路由从“localhost:8080”更改为“api/”。 3.在nginx中配置“/api/”为“localhost:8080/”
    • 从上面你的应用程序将在端口 4200 上运行,但它可以从 80(默认端口)打开,并且你对节点应用程序的请求最初将转到 localhost/api/some-route ,在此 Web 服务器将获取此 /api/ 路由并将您的请求转移到 localhost:8080/some-route 之后,这是您的节点应用程序。这就是整个通信通常的工作方式
    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2012-08-04
    • 2013-08-07
    • 2018-03-21
    相关资源
    最近更新 更多