Netflix Zuul设置允许访问跨域

2018-11-11  本文已影响9人  指间砂的宿命

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的了

上一篇下一篇

猜你喜欢

热点阅读