Spring Boot — Не удается настроить политику параметров CORS

#spring-boot #cors

#весенняя загрузка #cors

Вопрос:

У меня есть сервер Spring Boot rest api, и я пытаюсь подключиться к нему через Vue.js приложение

Вот как я настроил свою безопасность Spring Boot

 public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

  @Override
    protected void configure(HttpSecurity http) throws Exception {

      http.

    .....

    .cors()

  }

     @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("/**"));
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
        configuration.setAllowedHeaders(Arrays.asList("authorization", "content-type", "x-auth-token"));
        configuration.setExposedHeaders(Arrays.asList("x-auth-token"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}
  

Когда я пытаюсь получить доступ к токену авторизации от клиента, я получаю ошибку 403 в запросе ПАРАМЕТРОВ с этой ошибкой

 Access to XMLHttpRequest at 'http://localhost:8081/oauth/token' from origin 'http://localhost:8080' 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. Проблема в том, что ваш сервер отвечает 403 на запросы параметров на http://localhost:8081/oauth/token . Вам нужно настроить этот сервер так, чтобы вместо ответа на запрос ПАРАМЕТРОВ для этого URL-адреса было 200 OK.

Ответ №1:

Вы определенно должны иметь "*" вместо "/**" в setAllowedOrigins там.

Также правильным способом настройки CORS AFAIK было бы следующее:

 @Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS")
                .allowedHeaders("authorization", "content-type", "x-auth-token")
                .exposedHeaders("x-auth-token");
    }
}
  

Смотрите также CorsRegistration javadoc и Настройка CORS в руководстве по загрузке Spring