我有一个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;
}
因此,这两种方法到底有什么区别,为什么在第一种情况下它不起作用。有什么想法吗?
未检查,但是根据文档,您可以将路径模式从 registry.addMapping("*")
更改为 registry.addMapping("/**")
如果未指定路径模式,则将跨原始请求处理映射到"/deghter"。