CorsConfigurationSource 所需类型错误

问题描述 投票:0回答:2

我试图在全局范围内将 CORS 配置设置到我的 Spring Boot 应用程序,以便不在每个控制器或端点中使用 @CrossOrigin 注释。据我检查 Spring docs 和 stackoverflow,设置自定义 CORS 配置的方式如下:

  @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.addAllowedOrigin("http://localhost:3000");
        configuration.addAllowedMethod("*");
        configuration.addAllowedHeader("*");
        configuration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new
                UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

最后在 SecurityFilterChain 中使用它,例如:

 @Bean
    protected SecurityFilterChain securityFilterChain(final HttpSecurity http) throws Exception {
        http.cors(cors -> cors.configurationSource(corsConfigurationSource()))
                //.cors(Customizer.withDefaults())
                .csrf(
                        AbstractHttpConfigurer::disable 
                )
    //Some more configurations...
        return http.build();
    }

根据其他用法,这个代码块应该没问题,但它给了我:

所需类型:CorsConfigurationSource 提供:UrlBasedCorsConfigurationSource

由于 CorsConfigurationSource bean 的返回类型而导致的错误。铸造也不起作用。

我正在使用 Spring Boot 3.1.0。

有什么建议吗?

java spring spring-boot spring-security cors
2个回答
1
投票

我找到了解决方案。这有点傻,但可以帮助遇到同样问题的人:

我正在从以下位置导入 UrlBasedCorsConfigurationSource

import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

而不是

import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

所以,你不应该从反应包中导入它。


0
投票

解决方案 导入包 cors 并且不反应

org.springframework.web.cors.UrlBasedCorsConfigurationSource;

© www.soinside.com 2019 - 2024. All rights reserved.