定义CorsFilter Bean:
@Bean注解用于声明这是一个Spring管理的Bean。
corsFilter方法返回一个CorsFilter实例,该实例用于处理跨域请求。
创建CORS配置对象:
CorsConfiguration是Spring框架提供的CORS配置类,用于定义CORS策略。
通过config.addAllowedOrigin("*")允许所有来源的访问。实际应用中,可以设置具体的域名来限制访问。
通过config.addAllowedHeader("*")允许所有请求头。实际应用中,可以设置具体的请求头来限制访问。
通过config.addAllowedMethod("*")允许所有HTTP方法。实际应用中,可以设置具体的HTTP方法来限制访问。
创建基于URL的CORS配置源:
UrlBasedCorsConfigurationSource是Spring框架提供的基于URL的CORS配置源类。
通过source.registerCorsConfiguration("/**", config)将CORS配置应用到所有路径。"/**"表示匹配所有路径。
返回CorsFilter实例:
最后,返回一个新的CorsFilter实例,并传入CORS配置源。该过滤器将在处理每个请求时应用上述CORS配置,从而实现跨域资源共享。
通过这种方式,你可以灵活地控制哪些域名、请求头和HTTP方法可以访问你的应用资源,从而确保安全性和灵活性。
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;
@Configuration
public class CorsConfig {
// 定义一个CorsFilter Bean,用于处理跨域请求
@Bean
public CorsFilter corsFilter() {
// 创建CORS配置对象
CorsConfiguration config = new CorsConfiguration();
// 允许所有来源的访问
config.addAllowedOrigin("*");
// 允许所有的头部信息
config.addAllowedHeader("*");
// 允许所有的HTTP方法
config.addAllowedMethod("*");
// 创建基于URL的CORS配置源
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 注册CORS配置到指定路径,这里使用"/**"表示对所有路径都生效
source.registerCorsConfiguration("/**", config);
// 返回新的CorsFilter实例,传入CORS配置源
return new CorsFilter(source);
}
}