【发布时间】:2016-06-15 05:31:32
【问题描述】:
您好所有 spring boot/cloud/Netflix Zuul 专家!
我正在使用 Netflix OSS 组件和 Spring Boot 运行微服务环境,使用 eureka 和 Zuul 进行服务发现和路由。多个微服务通过 docker 部署在多个 VPS 上。我正在运行一个 Angular JS 客户端,它使用 Zuul 路由通过单个端点访问这些微服务。
我正在使用 yeoman hottowel 作为 angular 脚手架以实现快速开发,但是我遇到了 CORS 的问题,因为 Web 服务器在 localhost:3000 上运行并尝试通过正在运行的 Zuul 路由器调用 RESTful 端点别处。
我已经使用了 Zuul 过滤器(pre、route 和 post)来尝试将适当的访问控制标头添加到响应中,当我从 Rest 客户端提交 POST 请求时,我可以看到这是有效的(我正在使用 Paws)但是当通过在浏览器中运行的 Angular JavaScript 提交请求时,过滤器未处理 CORS 预检 OPTIONS 请求,实际上 Zuul 返回 403 错误,浏览器当然会报告 CORS 错误。
也许在生产中我可以从 Zuul 端点提供 JavaScript 而不会遇到这个问题,但我想知道是否有办法在 Zuul 中配置所有 CORS 处理?
【问题讨论】:
-
您遇到的错误是什么?我也从 AngularJS 中遇到问题,CORS 标头加倍,我认为这是因为我的 API 网关(Zuul 代理)和资源服务器(服务)中有一个 CORS 过滤器。
-
我没有收到从 Zuul 返回的任何 CORS 标头。我暂时禁用了 Zuul,直到我弄清楚这一点。我怀疑我会尽量不要太聪明,让资源服务器处理 CORS 处理和 Zuul 代理一切。当我有更新时,我会更新这篇文章。原则上,我仍然认为让 Zuul 处理 CORS 和身份验证是个好主意。
标签: spring-boot cors netflix-zuul