zuul作为统一网关代理所有后台接口,对于代码发起的http请求自然无需在意跨域的问题,但是对于提供给前端访问的接口,由于浏览器的安全策略对于跨域的资源访问会被拦截。
具体的关于CORS(Cross-Origin Resource Sharing)问题解析可以参考链接: 详解js跨域问题
1.Zuul配置允许CORS
zuul:
sensitiveHeaders: Cookie,Set-Cookie
ignored-headers: Access-Control-Allow-Credentials, Access-Control-Allow-Origin, Access-Control-Allow-Methods
将网关层的CORS放开
2.Spring配置CorsFilter
在完成第一步之后,对于Springboot项目接口,依旧会提示跨域,这是因为网关背后的每一个微服务有可能没有设置CORS,为了让每一个接口都支持CORS,因此需要在Zuul中配置CorsFilter, 代码如下:
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedMethod("*");
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
这样在页面测试时,就能保证所有的接口都是支持CORS的了
网友评论