允许全球范围内的Cors Registry或Corsfilter



我有一个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"。

最新更新