【问题标题】:'Invalid CORS request' returned by microservice after passing Zuul gateway通过 Zuul 网关后微服务返回的“无效 CORS 请求”
【发布时间】:2018-04-17 14:45:06
【问题描述】:

我在 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 请求”。

有什么想法吗?

【问题讨论】:

  • 微服务的日志是怎么说的?如果您在那里使用任何外部的东西,它的文档说明了它将采用或要求哪些 CORS 标头/参数?
  • 微服务日志什么也没说,只是我添加的过滤器中的打印输出。它是一个混合的 Java / Kotlin 服务,会产生影响吗?
  • @AdamK 你有什么解决方案吗,我也面临同样的问题,我也有同样的项目结构。
  • @Pallavi 不,抱歉,我无法解决问题。我不再从事这个项目,所以从那以后我就再也没有看过。对不起。

标签: spring-boot cors netflix-zuul


【解决方案1】:

您也可以尝试使用 spring cors 过滤器。

@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);
} 

【讨论】:

  • 嗨,潘,恐怕这也不起作用。同样的问题,我可以看到它正在访问服务,但在那里被拒绝并返回 403 'Invalid CORS request'。
猜你喜欢
  • 2021-02-01
  • 2020-10-23
  • 2018-05-22
  • 2017-04-18
  • 1970-01-01
  • 2017-07-26
  • 2021-02-02
  • 1970-01-01
  • 2018-05-07
相关资源
最近更新 更多