1

我有一个 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;
  }

那么这两种方法之间究竟有什么区别,为什么它在第一种情况下不起作用。有任何想法吗?

4

1 回答 1

0

未选中,但根据文档,您可以将路径模式从更改registry.addMapping("*")registry.addMapping("/**")

如果未指定路径模式,则跨域请求处理映射到“/**”。

于 2018-02-08T00:53:24.627 回答