通过Zuul网关后,微服务返回“无效的CORS请求”

时间:2017-11-05 09:20:12

标签: spring-boot cors netflix-zuul

我在Zuul网关后面有一个Spring Boot服务,部署在远程服务器上。我通过本地计算机上的Ionic应用程序访问这些内容。我在我的Zuul应用程序中设置了一个corsFilter,如下所示:

@Bean
public FilterRegistrationBean corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.addAllowedOrigin("*");
    config.addAllowedHeader("*");
    config.addAllowedMethod("*");
    source.registerCorsConfiguration("/**", config);
    FilterRegistrationBean bean = new FilterRegistrationBean(new org.springframework.web.filter.CorsFilter(source));
    bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
    return bean;
}

请求被Zuul接受并传递给微服务(我可以在微服务日志中看到它)但是微服务拒绝请求并返回403错误'无效的CORS请求'。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您也可以尝试使用弹簧过滤器。

@Bean
public CorsFilter corsFilter() {
  final UrlBasedCorsConfigurationSource source = new 
  UrlBasedCorsConfigurationSource();
  final CorsConfiguration config = new CorsConfiguration();
  config.setAllowCredentials(true);
  config.addAllowedOrigin("*");
  config.addExposedHeader("Content-Type");
  config.addExposedHeader("Authorization");
  config.addExposedHeader("Accept");
  config.addExposedHeader("Origin");
  config.addAllowedHeader("*");
  config.addAllowedMethod("*");
  source.registerCorsConfiguration("/**", config);
  return new CorsFilter(source);
}