【问题标题】:How to set SameSite Cookie in Tomcat's Cookie Processor?如何在 Tomcat 的 Cookie 处理器中设置 SameSite Cookie?
【发布时间】:2019-12-21 16:11:37
【问题描述】:

Tomcat 的 context.xml 定义了 CookieProcessor (默认 LegacyCookieProcessor)

https://tomcat.apache.org/tomcat-9.0-doc/config/cookie-processor.html

我正在尝试添加 cookie 处理器上显示的属性,但这似乎不起作用

我没有看到设置了 sameSite 属性的 Tomcat 响应标头 cookie

【问题讨论】:

标签: tomcat cookies tomcat9 samesite


【解决方案1】:

在您的 Web 应用程序中,在 META-INF 文件夹中创建一个包含此内容的 context.xml 文件。

<Context>
   <CookieProcessor sameSiteCookies="strict" />
</Context>

如果你已经有一个 context.xml 文件,你只需要添加 CookieProcessor 元素。

从 Tomcat 9.0.21 和 8.5.42 或 9.0.28 和 8.5.48 开始,如果您需要将该属性设置为“none”,则此行为是可能的。

于 2019 年 5 月 20 日通过拉取请求 162 合并到 Tomcat 主服务器中

【讨论】:

  • 感谢您指出这是从 8.5.42 开始提供的,我使用的是 8.5.23,因此必须更新 Apache/Tomcat
  • 更新:在 Tomcat Chrome > 80 中的会话 cookie 出现一些问题。它已在 2019 年 10 月修复。See the bug report (PR #219)
  • @JuniorDussouillez 非常感谢您的更新。 8.5.48 之前的版本确实取消了 cookie 的 sameSite 属性
  • @JuniorDussouillez 谢谢伙计,我浪费了很多时间认为我的弹簧配置错误,只是为了设置 SameSite=None
【解决方案2】:

找到答案:

  1. 编辑tomcat/conf/context.xml
  2. 以下行中的更新 CookieProcessor 元素表示在 HTTP 响应标头的 set-cookie 中设置 SameSiteCookies。

&lt;CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" sameSiteCookies="strict" /&gt;

【讨论】:

  • 一般来说,您不应该编辑tomcat/conf/context.xml。应该有办法让它与单个应用程序一起工作。
  • 试过这个看看是否也适用于 Tomcat
猜你喜欢
  • 2021-07-22
  • 2020-03-13
  • 2020-07-07
  • 2020-02-17
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
相关资源
最近更新 更多