在springboot里,要实现跨域,需要在被调用的类或者方法上增加@CrossOrigin注解(局部设置,针对某个方法)。但是在spring cloud里,要在粒度那么小的去控制跨域,那也太繁琐了,一般我们在zuul路由里设置(全局设置),有两种方式,一种是通过增加CorsFilter过滤器,一种是通过继承ZuulFilter
1、在zuul里增加CorsFilter过滤器
@Configuration
public class GateWayCorsConfig {
@Bean
public FilterRegistrationBean corsFilter() {
final UrlBasedCorsConfigurationSource source =
new
UrlBasedCorsConfigurationSource();
final CorsConfiguration config =
new
CorsConfiguration();
config.setAllowCredentials(
true
);
config.addAllowedOrigin(
"*"
);
config.addAllowedHeader(
"*"
);
config.addAllowedMethod(
"*"
);
//这个请求头在https中会出现,但是有点问题,下面我会说
//config.addExposedHeader("X-forwared-port, X-forwarded-host");
source.registerCorsConfiguration(
"/**"
, config);
FilterRegistrationBean bean =
new
FilterRegistrationBean(
new
CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return
bean;
}
}
2、继承ZuulFilter
参考文档:
http://www.php.cn/java-article-407481.html