🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
您可以在同一系统中的服务之间共享标头,但您可能不希望敏感标头向下游泄漏到外部服务器。 您可以在路由配置中指定忽略的标头列表。 Cookie起着特殊的作用,因为它们在浏览器中具有良好定义的语义,并且它们始终被视为敏感。 如果您的代理的消费者是浏览器,那么下游服务的cookie也会给用户带来问题,因为它们都混杂起来(所有下游服务看起来都来自同一个地方)。 如果您对服务的设计非常小心(例如,如果只有一个下游服务设置了cookie),您可以让它们从后端一直流到调用者。 此外,如果您的代理设置了cookie并且所有后端服务都是同一系统的一部分,那么简单地共享它们就很自然(例如,使用Spring Session将它们链接到某个共享状态)。 除此之外,由下游服务设置的任何cookie都可能对调用者没用,因此建议您(至少)将Set-Cookie和Cookie设置为不属于您的域的路由的敏感标头。 即使是属于您域名的路由,也要在让cookie和代理之间流动之前仔细考虑它的含义。 可以将敏感标头配置为每个路由的逗号分隔列表,如以下示例所示: ``` zuul: routes: users: path: /myusers/** sensitiveHeaders: Cookie,Set-Cookie,Authorization url: https://downstream ``` >这是sensitiveHeaders的默认值,因此除非您希望它不同,否则无需进行设置。 这是Spring Cloud Netflix 1.1中的新功能(在1.0中,用户无法控制标题,并且所有Cookie都在两个方向上流动)。 `sensitiveHeaders`是黑名单,默认不为空。 因此,要使Zuul发送所有标头(忽略的标头除外),您必须将其明确设置为空列表。 如果要将cookie或授权标头传递到后端,则必须这样做。 以下示例显示了如何使用`sensitiveHeaders`: ``` zuul: routes: users: path: /myusers/** sensitiveHeaders: url: https://downstream ``` 您还可以通过设置`zuul.sensitiveHeaders`来设置敏感标头。 如果在路由上设置了`sensitiveHeaders`,它将覆盖全局`sensitiveHeaders`设置