【问题标题】:How to make front-end angularjs code communicate to backend java code on same EC2如何使前端 angularjs 代码与同一 EC2 上的后端 java 代码通信
【发布时间】:2019-02-13 07:31:13
【问题描述】:

我在私有子网上有一个 EC2 实例。

我在端口 8080 上使用 nohup 部署了一个 Java Spring-boot 应用程序

我在 AngularJS 中有另一个前端应用程序,它使用 grunt 和 pm2 在端口 9000 上的同一 EC2 上运行。

前端应用程序与本地主机上的 java 后端通信。

在前端代码中,我使用$http 库来调用java API,如下所示:

$http({
  method: 'GET',
  url: 'http://localhost:8080/myserv/getdata',
  headers: {
    'Content-Type': '*/*'
  }
}).then(function (response) {
  // processing data...
},
function (err) {
 console.log('ERROR: ' + JSON.stringify(err));
});

EC2 实例本身位于专用网络上,它通过 ELB 公开,该 ELB 将所有互联网流量重定向到 EC2 上的 localhost 端口 9000。

现在,当我通过浏览器打开应用程序时,我可以正确看到 UI,但在开发控制台中,我给出了错误:

Failed to load resource: net::ERR_CONNECTION_REFUSED

所以,我认为它无法与后端 API 通信。

在EC2上,当我在http://localhost:9000/home/http://localhost:8080/myserv/getdata上进行curl时,都给出了正确的响应,所以两个应用程序都在运行文件,那么为什么前端不能与后端通信结束了吗?

我该如何解决这个问题?

【问题讨论】:

    标签: java angularjs amazon-web-services spring-boot amazon-ec2


    【解决方案1】:

    AngularJS 在浏览器中运行。 AngularJS 应用程序的“localhost”版本始终是您的本地笔记本电脑/台式计算机,而 Spring Boot 的“localhost”版本是 EC2 服务器。因此,您尝试做的事情是行不通的。只有在本地计算机上运行所有内容时,才能像这样使用“localhost”。

    必须公开 Spring Boot 应用程序,以便可以从将使用您的应用程序的每个人的笔记本电脑/台式计算机访问它。如果这是一个公共应用程序,则意味着将其暴露给整个互联网。

    AngularJS 应用程序需要配置 EC2 服务器的 Internet 地址。

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2017-05-29
      • 2018-09-21
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      相关资源
      最近更新 更多