Ошибки CORS при развертывании приложений Spring Boot и Angular в Docker - PullRequest
0 голосов
/ 07 ноября 2019

Я развернул 3 док-контейнера - для базы данных, бэкэнда (Spring boot) и внешнего интерфейса (Angular). Однако при посещении веб-сайта (Google Cloud VM) я получаю сообщение об ошибке CORS для всех запросов к бэкэндам. Бэкэнд работает на 8080.

Я получаю CORS при посещении IP: 80

Почему это происходит? Какой обходной путь?

Вот как я использовал CrossOrigin в контроллере.

@CrossOrigin("*")
@RestController
@RequestMapping("/api")
public class CustomerController {

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Вы не можете вызывать URL-адреса из ваших сценариев, которые не найдены в том же домене, в котором была отображена ваша страница:

В целях безопасности браузеры ограничивают запросы HTTP из разных источников, инициированные из сценариев. ,Например, XMLHttpRequest и Fetch API следуют политике одного источника. Это означает, что веб-приложение, использующее эти API, может запрашивать ресурсы только из того же источника, из которого было загружено приложение, если только ответ из других источников не содержит правильных заголовков CORS.

Источник: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

На самом деле у вас есть 3 варианта:

  1. Добавьте порт 8080 (порт вашего сервера Spring Boots Tomcat) к вашим исключениям (см .: https://spring.io/guides/gs/rest-service-cors/)
  2. Использоватьобратный прокси-сервер типа nginx, который направляет ваши запросы в API или обслуживает ресурсы Angular в зависимости от запроса
  3. Обслуживание ресурсов Angualr из приложения Spring Boot
1 голос
/ 07 ноября 2019

@ Cross: будет применяться для одной страницы, это не будет применимо для всего приложения. Поэтому я бы предложил вам следовать подходу, как определено ниже. Аналогичная сценарий: CORS Config . где вы можете определить фильтр для всего приложения с большим контролем над конфигурацией для CORS.

А также, если в ваше приложение интегрирована защита Spring, вам нужно выполнить еще некоторые изменения конфигурации, чтобы заставить его работать.

Надеюсь, это было полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...