Требуется ли отдельный Spring Boot Starter для настройки CORS?

Ответ

Нет, не требуется. Поддержка CORS (Cross-Origin Resource Sharing) встроена в стандартные веб-стартеры Spring Boot.

  • Для Spring MVC (spring-boot-starter-web):

    @Configuration
    public class CorsConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/api/**")
                    .allowedOrigins("https://trusted.com")
                    .allowedMethods("GET", "POST", "PUT");
        }
    }

    Или точечно с @CrossOrigin на контроллере/методе.

  • Для Spring WebFlux (spring-boot-starter-webflux):

    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOrigin("*");
        config.addAllowedMethod("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }

CORS — это функция веб-слоя, а не отдельная библиотека.

Ответ 18+ 🔞

Ну, слушай, а то тут некоторые такие, блядь, начинают: "Ой, для CORS надо отдельную либу подключать, овердохуища зависимостей!" Да ни хуя подобного, ёпта!

Это ж, блядь, базовая фича веб-сервера, чтобы браузер не орал "ААА, ЗАПРЕЩЕНО!", когда фронт с одного домена, а API с другого. В Spring Boot это уже в коробке, как эти, блядь, семечки в шелухе.

Смотри, есть два главных пути, как это всё ебучено работает.

Первый путь — для классического Spring MVC (это когда spring-boot-starter-web). Тут всё через конфигурацию, блядь.

Можно глобально настроить, чтобы не пиздеть на каждый контроллер:

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**") // Ко всем урлам, что начинаются с /api
                .allowedOrigins("https://trusted.com") // Откуда можно лезть
                .allowedMethods("GET", "POST", "PUT"); // Какие методы разрешены
    }
}

А если лень глобально, можно, блядь, точечно, прямо над контроллером или методом навесить @CrossOrigin. Как пластырь, сука.


Второй путь — для реактивного WebFlux (это когда spring-boot-starter-webflux). Тут уже по-другому, через фильтры, блядь.

@Bean
public CorsWebFilter corsFilter() {
    CorsConfiguration config = new CorsConfiguration();
    config.addAllowedOrigin("*"); // Внимание! На проде так не делать, это пиздец какой дырявый!
    config.addAllowedMethod("*"); // Разрешаем все методы
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", config); // Ко всем путям применяем
    return new CorsWebFilter(source);
}

Главное, чувак, не ставь allowedOrigin("*") на продакшене, а то потом будешь охуевать, откуда столько запросов с левых доменов. Это как дверь нараспашку оставить, блядь.

Короче, CORS — это не отдельная библиотека, а просто настройка веб-слоя. Всё уже есть, не надо ничего выдумывать, в рот меня чих-пых!