zin*_*bat 2 cors spring-boot netflix-zuul
所有 Spring Boot/云/Netflix Zuul 专家大家好!
我正在使用 Netflix OSS 组件和 Spring Boot 运行微服务环境,使用 eureka 和 Zuul 进行服务发现和路由。通过docker将多个微服务部署在多个VPS上。我正在运行一个 Angular JS 客户端,它使用 Zuul 路由通过单个端点访问这些微服务。
我使用 yeoman hottowel 作为角度脚手架,以实现快速开发,但是我遇到了 CORS 问题,因为 Web 服务器在 localhost:3000 上运行,并尝试通过在其他地方运行的 Zuul 路由器调用 RESTful 端点。
我已经尝试使用 Zuul 过滤器(前置、路由和后置)来尝试将适当的访问控制标头添加到响应中,并且我可以看到,当我从 Rest 客户端提交 POST 请求时(我正在使用Paws),但是当通过浏览器中运行的 Angular JavaScript 提交请求时,过滤器不会处理 CORS 预检选项请求,事实上 Zuul 返回 403 错误,浏览器当然会报告 CORS 错误。
也许在生产中我可以从 Zuul 端点提供 JavaScript 服务而不会遇到这个问题,但我想知道是否有一种方法可以在 Zuul 中配置所有 CORS 处理?
小智 5
我在使用自定义 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;
}
Run Code Online (Sandbox Code Playgroud)
我希望这能帮到您!
| 归档时间: |
|
| 查看次数: |
7631 次 |
| 最近记录: |