我有一个Springboot后端,通过它我暴露了一些端点。
我需要从我的前端访问它。当我这样做时,我收到错误Invalid CORS request
。很公平。
我在我的后端全局启用了Cross origin请求,如doc中所述。
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(final CorsRegistry registry) {
registry.addMapping("*").allowedOrigins("My-frontend-Host-url");
}
}
但由于某种原因,这不起作用。我犯了同样的错误。但我设法使用CorsFilter
如下工作
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("My-frontend-Host-url");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return bean;
}
那么这两种方法之间的区别究竟是什么呢?为什么它不适用于第一种情况。有什么想法吗?
答案 0 :(得分:0)
未选中,但根据doc,您可以将路径模式从registry.addMapping("*")
更改为registry.addMapping("/**")
如果未指定路径模式,则跨源请求处理将映射到“/**”。