package com.xly.config; 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 org.springframework.web.filter.CorsFilter; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /*** * @Author 钱豹 * @Date 22:40 2026/2/3 * @Param * @return * @Description 跨域配置 **/ @Configuration public class CorsConfig { /** * 允许所有跨域请求 - CorsFilter方式 */ @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); // 允许所有域名 config.addAllowedOriginPattern("*"); // 允许所有请求方法 config.addAllowedMethod("*"); // 允许所有请求头 config.addAllowedHeader("*"); // 允许携带凭证(如cookies) config.setAllowCredentials(true); // 暴露所有响应头 config.addExposedHeader("*"); // 预检请求缓存时间 config.setMaxAge(3600L); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } /** * 允许所有跨域请求 - WebMvcConfigurer方式 */ @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") // 使用 allowedOriginPatterns 代替 allowedOrigins .allowedMethods("*") .allowedHeaders("*") .exposedHeaders("*") .allowCredentials(true) .maxAge(3600); } }; } }