首页 文章

Netflix Zuul CORS

提问于
浏览
1

你好所有 Spring 季启动/ Cloud / Netflix Zuul专家!

我使用Netflix OSS组件运行微服务环境,使用eureka和Zuul运行Spring Boot进行服务发现和路由 . 多个微服务通过docker部署在多个VPS上 . 我正在运行一个Angular JS客户端,它使用Zuul路由通过单个 endpoints 访问这些微服务 .

我使用yeoman hottowel进行快速开发的角度搭建,但是由于Web服务器在localhost:3000上运行并试图通过在别处运行的Zuul路由器调用RESTful endpoints ,因此我遇到了CORS的问题 .

我已经使用了Zuul过滤器(pre,route和post)来尝试向响应中添加适当的访问控制头,我可以看到当我从Rest客户端提交POST请求时(我正在使用) Paws)但是当通过在浏览器中运行的角度JavaScript提交请求时,过滤器不处理CORS预检OPTIONS请求,事实上Zuul返回403错误,浏览器当然报告CORS错误 .

也许在 生产环境 中我可以从Zuul endpoints 提供JavaScript并且不会遇到这个问题,但我想知道是否有一种方法可以在Zuul中配置所有CORS处理?

1 回答

  • 2

    我对自定义cors过滤器有同样的问题 . 我通过在zuul项目中添加代码解决了这个问题,如下所示:

    @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(0);
        return bean;
    }
    

    我希望这能帮到您!

相关问题