我在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请求'。
有什么想法吗?
答案 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);
}