#java #angular #spring-boot #rest #embedded-tomcat-8
#java #angular #весенняя загрузка #rest #встроенный-tomcat-8
Вопрос:
У меня есть REST API на основе spring boot, развернутый на частном порту 7070 (встроенный tomcat), который недоступен через Интернет. Кроме того, я создал приложение angular, которое развернуто на общедоступном порту 9070, доступном через Интернет.
Когда я пытаюсь войти в свое приложение angular и вызываю 7070, выдается ошибка тайм-аута, потому что это частный порт и к нему нельзя получить доступ через общедоступный Интернет.
Есть ли способ вызвать мой rest API из моего приложения angular, или я должен предоставить rest API на каком-либо общедоступном порту (в данном случае 9070)?
Ответ №1:
Да, вам нужно предоставить его.
Приложение angular (javascript) будет запускаться в браузере клиента — следовательно, оно может взаимодействовать с серверной частью только через Интернет.
Существует несколько улучшений безопасности, которые могут сделать это взаимодействие более безопасным, всего несколько из них:
- Блокировка запросов из разных источников
- Использование HTTPS
- Использование решений аутентификации JWT webtoken
- Использование прокси-сервера, который туннелирует запросы на сервер
Это последнее, что вы можете сделать, чтобы защитить серверную конечную точку REST от Интернета. Таким образом, вы можете настроить свое приложение angular для связи с прокси-сервером вместо внутреннего сервера, и прокси-сервер перенаправит связь, но вам все равно нужно предоставить хотя бы один порт для общедоступного Интернета.
Комментарии:
1. если я предоставлю его, мне нужно будет установить учетные данные для доступа к API в моем приложении angular, которые могут быть видны внешнему миру. Есть ли способ вызывать API не из браузера клиента, а со стороны сервера
2. да, но вам нужно создать уровень посредника (прокси-сервер, о котором я упоминал, или простое приложение с резервной копией), который будет вызывать ваш защищенный API. Учетные данные для доступа могут быть переданы внешнему миру, хотя. Проверьте подписанные токены JWT, это именно так, безопасным способом.