这里运行所有请求通过,可以自行修改过滤器内容:
@Configuration // 一定不能忽略此注解
public class MyCorsFilter {
@Bean
public CorsFilter corsFilter() {
// 1.创建 CORS 配置对象
CorsConfiguration config = new CorsConfiguration();
// 支持域
config.addAllowedOriginPattern("*");
// 是否发送 Cookie
config.setAllowCredentials(true);
// 支持请求方式
config.addAllowedMethod("*");
// 允许的原始请求头部信息
config.addAllowedHeader("*");
// 暴露的头部信息
config.addExposedHeader("*");
// 2.添加地址映射
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
corsConfigurationSource.registerCorsConfiguration("/**", config);
// 3.返回 CorsFilter 对象
return new CorsFilter(corsConfigurationSource);
}
}
新建MyCorsFilter类,复制代码重启即可。
这个Spring Boot过滤器的作用是实现CORS跨域资源共享。
原理
-
创建CorsConfiguration对象,并设置允许的域、是否带cookie、允许的请求方式、允许的请求头等信息。
-
创建UrlBasedCorsConfigurationSource对象,并使用CorsConfiguration对象为所有路径(“/**”)进行CORS配置。
-
创建CorsFilter过滤器,使用UrlBasedCorsConfigurationSource作为构造参数。
-
通过@Configuration注解声明这是一个配置类。
-
通过@Bean注解将CorsFilter注册为Spring容器的Bean。
这样,Spring Boot应用启动时会自动以过滤器的形式加载CorsFilter。当处理请求时,会根据请求路径查找匹配的CORS配置,从而实现CORS跨域资源访问。