【问题标题】:Spring Cloud Zuul does not forward cookiesSpring Cloud Zuul 不转发 cookie
【发布时间】:2016-09-20 16:27:23
【问题描述】:

我遇到了 spring cloud Zuul 代理的问题。我已经配置并运行了两个微服务。我的网络浏览器中有一个 cookie,我使用 Zuul 作为 API 网关,当我点击 Zuul 调用我的后端时,Zuul 没有将我的 cookie 转发到我的后端,似乎 Zuul 忽略了发送的 cookie,而我的后端是无法检索此内容。

你能帮我解决这个问题吗?我正在使用 Spring cloud Brixton.RELEASE 和 spring boot 1.3.5

问候。

【问题讨论】:

    标签: cookies spring-boot netflix-zuul spring-cloud-netflix


    【解决方案1】:

    在 Spring Cloud Netflix 1.1 中,“Cookies”包含在敏感标头列表中,它们不会被传递。

    这可以通过配置 zuul.routes.*.sensitiveHeaders 进行操作。

    在标题“Cookie 和敏感标头”下查看文档详细信息:

    http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html

    【讨论】:

    • 感谢您的回复,让我试试您的建议。
    • 看看 ZuulProperties 类。有两种方法可以配置敏感标头,一种是全局的,一种是针对每个路由的。默认包含 Set-Cookie 和 Cookie。要启用它们,您需要用其他东西覆盖它。例如:zuul.sensitiveHeaders: 授权
    • 我通读了上面的文档,但这些文档并没有准确说明您如何“覆盖”默认值。我没有自动假设如果我为sensitiveHeaders 指定了一个新值,那么默认值(Cookie、Set-Cookie、Authorization)将被取消设置。但是我可以确认将值设置为不同的值会完全取消默认设置。感谢@qza 提供有用的提示。
    【解决方案2】:

    允许不转发这些数据的默认 Zuul 敏感标头是

    sensitiveHeaders=Cookie,Set-Cookie,Authorization
    

    为了能够转发 cookie,您可以放入 bootstrap.properties 文件

    sensitiveHeaders=
    

    或者如果您不需要授权标头

    sensitiveHeaders=Authorization
    

    【讨论】:

      【解决方案3】:

      像这样在 application.yml 中添加敏感标头:-

      routes:
      service:
        path: /service/**
        sensitiveHeaders: Cookie,Set-Cookie
        url: http://localhost:9001
      

      【讨论】:

        【解决方案4】:

        我已经解决了这个问题,只需使用简单的 http 标头传递在我的 cookie 中发送的数据。

        【讨论】:

        • 对仅 HTTP 标头(例如 cookie)执行此操作将允许客户端欺骗安全检查或修改服务器端 cookie 数据。
        猜你喜欢
        • 2018-02-02
        • 2016-01-27
        • 2017-09-29
        • 2019-02-12
        • 2023-03-11
        • 2018-04-15
        • 1970-01-01
        • 2018-02-16
        • 2016-07-11
        相关资源
        最近更新 更多