我有一个 Springboot 后端,通过它我暴露了一些端点。
我需要从我的前端访问它。当我这样做时,我收到一个错误消息Invalid CORS request
。很公平。如本文档
中所述,我在后端全局启用了跨源请求。下面的代码片段
@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;
}
那么这两种方法之间究竟有什么区别,为什么它在第一种情况下不起作用。有任何想法吗?