gpt4 book ai didi

java - 在 Spring Boot 中全局启用 CORS

转载 作者:搜寻专家 更新时间:2023-10-31 08:08:12 25 4
gpt4 key购买 nike

我尝试像这样在全局范围内启用 CORS:

@Configuration
@ComponentScan("com.example")
@EnableWebMvc
public class OriginFilter extends WebMvcConfigurerAdapter {

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE");
}
}

我也试过这种方法:

@Configuration
public class OriginFilter implements WebMvcConfigurer {

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD")
.allowCredentials(true);
}
}

但这些都不适合我。

单个类的注释 @CrossOrigin 有效,但我想在全局范围内启用 CORS。

最佳答案

您确实可以像您在回答中提到的那样定义自己的 Filter 。 Spring已经有了这样一个CorsFilter已经,所以你不必自己创建一个。只需将它注册为一个 bean,它就可以工作了:

@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// Don't do this in production, use a proper list of allowed origins
config.setAllowedOrigins(Collections.singletonList("*"));
config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept"));
config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH"));
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}

关于java - 在 Spring Boot 中全局启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51720552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com