Как включить cors spring boot jhipster

#angular #spring-boot #cors #jhipster

#angular #spring-boot #cors #jhipster

Вопрос:

У меня есть приложение angular, которое подключается к моему приложению spring boot, которое я сгенерировал с помощью jhipster. Когда я отправляю post-запрос, я получаю эту ошибку:

 Access to XMLHttpRequest at 'http://localhost:8081/api/materials-add' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
 
  1. Я попытался активировать Cors в своем Application.dev.yml, а затем начать с профиля разработчика, но это не сработало.
  2. Я попытался поместить этот метод в свой класс конфигурации:
     @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**").allowedMethods("GET", "POST", "PUT", "PATCH", 
         "DELETE", "OPTIONS");
    }
     

Но по-прежнему безуспешно.

3.

 @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = jHipsterProperties.getCors();
        if (config.getAllowedOrigins() != null amp;amp; !config.getAllowedOrigins().isEmpty()) {
            log.debug("Registering CORS filter");
            source.registerCorsConfiguration("/api/**", config);
            source.registerCorsConfiguration("/management/**", config);
            source.registerCorsConfiguration("/v2/api-docs", config);
            source.registerCorsConfiguration("http://localhost:4200/**",config);
        }
        return new CorsFilter(source);
    }
 

Это был код, который уже существовал, я просто добавил последнюю строку с localhost: 4200. Но все равно не повезло. Может ли кто-нибудь мне помочь или дать мне совет, что я могу попробовать дальше?

Ошибка Intellij:

 2020-12-25 20:17:47.229  WARN 38287 --- [  XNIO-1 task-3] o.z.problem.spring.common.AdviceTraits   : Unauthorized: Full authentication is required to access this resource
2020-12-25 20:17:47.231  WARN 38287 --- [  XNIO-1 task-3] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.security.authentication.InsufficientAuthenticationException: Full authentication is required to access this resource]
 

Но я авторизовался через свой шлюз, и мой шлюз и мой микросервис регистрируются в одном реестре, поэтому я должен быть авторизован. эта ошибка связана с CORS?

Я только что прочитал эту часть в своем приложении.dev.yml: CORS по умолчанию отключен для микросервисов, так как вы должны получить к ним доступ через шлюз.

В моем шлюзе я уже разрешил cors через application.dev.yml следующим образом:

 cors:
    allowed-origins: '*'
    allowed-methods: '*'
    allowed-headers: '*'
    exposed-headers: 'Authorization,Link,X-Total-Count'
    allow-credentials: true
    max-age: 1800
 

Ответ №1:

Я считаю, что ваша проблема в том, что

разрешенные исходные данные: ‘*’ и разрешить учетные данные: true

нельзя использовать вместе, так как это было бы опасно небезопасно.

Смотрите Здесь для получения более подробной информации https://portswigger.net/web-security/cors/access-control-allow-origin

Удалите разрешающие учетные данные или укажите http://localhost:8081 etc вместо подстановочного знака allowed-origins