package com.xly.erp.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import java.util.Arrays; import java.util.List; /** * 全局 CORS 配置 —— 规则源见 docs/04 § 1.8。 * Spring Security 项目需在 SecurityFilterChain 启用: * http.cors(c -> c.configurationSource(corsConfigurationSource())); */ @Configuration public class CorsConfig { @Value("${app.cors.allowed-origins:*}") private String allowedOrigins; @Bean public UrlBasedCorsConfigurationSource corsConfigurationSource() { CorsConfiguration config = new CorsConfiguration(); config.setAllowedOriginPatterns(Arrays.asList(allowedOrigins.split(","))); config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS")); config.setAllowedHeaders(List.of("*")); config.setExposedHeaders(List.of("Authorization", "Content-Disposition")); config.setAllowCredentials(true); config.setMaxAge(3600L); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return source; } }