Как заставить исходный код angularjs связываться с внутренним java-кодом на том же EC2 - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть экземпляр EC2 в частной подсети.

У меня есть приложение Java Spring-boot, развернутое с использованием nohup на нем через порт 8080

У меня есть еще одно интерфейсное приложение в AngularJSкоторый запускается с использованием grunt и pm2 на том же EC2 на порту 9000.

Приложение переднего плана связывается с сервером Java на localhost.

В коде переднего плана я использую $http библиотека для вызова API Java следующим образом:

$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, который перенаправляет весь интернет-трафик на порт localhost 9000 на EC2.

Теперь, когда я открываю приложение через браузер, я вижу правильно пользовательский интерфейс, но в консоли разработчика выдает ошибку:

Failed to load resource: net::ERR_CONNECTION_REFUSED

Итак, я думаю, что она не можетвзаимодействовать с бэкэнд-API.

На EC2, когда я делаю скручивание на http://localhost:9000/home/ и на http://localhost:8080/myserv/getdata, оба дают правильный ответ, поэтому оба приложения запускают файл, тогда почему нетпередний конецсвязаться с серверной частью?

Как это исправить?

1 Ответ

0 голосов
/ 09 февраля 2019

AngularJS работает в браузере.Версия «localhost» приложения AngularJS всегда будет вашим локальным ноутбуком / настольным компьютером, а версия «localhost» Spring Boot - сервером EC2.То, что вы пытаетесь сделать, не сработает.Использование «localhost», как это, будет работать только тогда, когда вы запускаете все на своем локальном компьютере.

Приложение Spring Boot должно быть открыто, чтобы к нему можно было получить доступ с ноутбука / настольного компьютера каждого человека, который будет использоватьваше приложение.Если это общедоступное приложение, это означает доступ ко всему Интернету.

Приложение AngularJS должно быть настроено с интернет-адресом сервера EC2.

...