Как исправить ошибку Cors Отсутствует Access-Control-Allow-Origin - PullRequest
0 голосов
/ 04 мая 2020

У меня есть приложение для весенней загрузки, и я не использую Spring Security. Мой сервис отдыха выглядит следующим образом

@RestController
@CrossOrigin
public class AuthenticationService {
    ...
    @GetMapping(path = "/getUser")
    public JSONObject getUser() {
        ...
    }
}

Я вызываю API из REST-приложения, используя ax ios get. Все отлично работает локально.

Но когда приложение развернуто в облаке как образ docker, я получаю ошибку 403 (Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').

Даже Когда я добавляю файл CorsConfiguration, я получаю ту же ошибку.

@Configuration
public class CorsConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() 
    {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedOrigins("*")
                .allowedHeaders("Accept", "Origin", "X-Requested-With,Content-Type", "Authorization", "X-XSRF-Header")
                .allowCredentials(true);
                }
        };
    }
}

Я потратил много времени, чтобы найти решение для этого, но почему-то оно не работает.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

исправлено добавлением пружинной защиты

0 голосов
/ 04 мая 2020

Объявление бина прекрасно работает для меня:

@Configuration
public class WebConfigurer implements ServletContextInitializer, WebMvcConfigurer {

    private final Environment env;
    private final MyProperties properties;

    public WebConfigurer(Environment env, MyProperties properties) {
        this.env = env;
        this.properties = properties;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = properties.getCors();
        if (config.getAllowedOrigins() != null && !config.getAllowedOrigins().isEmpty()) {
            log.debug("Registering CORS filter");
            source.registerCorsConfiguration("/api/**", config);
            source.registerCorsConfiguration("/management/**", config);
            source.registerCorsConfiguration("/v3/api-docs", config);
        }
        return new CorsFilter(source);
    }

}

Свойства Yaml:

  # CORS is only enabled by default with the "dev" profile
  cors:
    allowed-origins: '*'
    allowed-methods: '*'
    allowed-headers: '*'
    exposed-headers: 'Authorization,Link,X-Total-Count'
    allow-credentials: true
    max-age: 1800
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...