You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security 6:CorsFilter与UrlBasedCorsConfigurationSource类型不匹配问题

问题根源

你把CorsConfigurationSource类型的Bean命名成了corsFilter,Spring Security会默认识别名为corsFilter的Bean为org.springframework.web.filter.CorsFilter类型,而非CorsConfigurationSource,这直接导致了类型不匹配的报错。

解决方案
  1. 修改Bean方法名:将返回CorsConfigurationSource的方法名从corsFilter改为其他名称(比如corsConfigurationSource),避免名字冲突:
@Bean
public CorsConfigurationSource corsConfigurationSource() {
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    // 注意:如果你的Angular是用HTTP协议运行的,这里要改成http://localhost:4200
    config.setAllowedOrigins(List.of("https://localhost:4200"));
    config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
    // 建议补充允许的请求头,避免后续出现请求头相关的CORS问题
    config.setAllowedHeaders(Arrays.asList("Authorization", "Content-Type"));

    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", config);

    return source;
}
  1. 保留现有SecurityFilterChain配置:你写的SecurityFilterChain里的.cors(withDefaults())是正确的,它会自动查找并使用CorsConfigurationSource类型的Bean。
额外注意事项
  • 确认Angular前端的运行协议(HTTP/HTTPS)、端口(4200)和配置里的allowedOrigins完全一致,否则CORS限制仍会生效。
  • 生产环境不建议使用config.addAllowedHeader("*"),尽量明确指定允许的请求头,避免安全风险。

内容的提问来源于stack exchange,提问作者camilajenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:53:13