Spring提供了一个名为CorsFilter的过滤器,用来处理跨域请求
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 {
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*"); // 允许所有来源
config.addAllowedMethod("*"); // 允许所有HTTP方法
config.addAllowedHeader("*"); // 允许所有请求头
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
上面的代码创建了一个名为CorsConfig的配置类,然后再注册一个CorsFilter Bean。允许来自任何来源的跨域请求,使用任何HTTP方法,并且允许任何请求头。
如果需要更细粒度地控制跨域请求,你可以在CorsConfiguration对象上设置不同的选项,如允许的请求头、暴露的响应头等。
config.addAllowedOrigin("http://example.com"); // 允许特定来源
config.addAllowedMethod("GET"); // 允许特定HTTP方法
config.addAllowedHeader("Authorization"); // 允许特定请求头
config.addExposedHeader("Custom-Header"); // 暴露响应头供前端访问
config.setAllowCredentials(true); // 允许发送凭证信息(如Cookie)