如何在 Tomcat 的 Cookie Processor 中设置 SameSite Cookie?

Pun*_*eri 12 cookies tomcat tomcat9 samesite

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

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

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

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

Iva*_*nov 29

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

<Context>
   <CookieProcessor sameSiteCookies="strict" />
</Context>
Run Code Online (Sandbox Code Playgroud)

如果您已有 context.xml 文件,则只需添加 CookieProcessor 元素。

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

2019 年 5 月 20 日合并到 Tomcat master 中,请求请求为162

  • 更新:在 Tomcat &lt; 9.0.28(或 &lt; 8.5.48 对于 8.5x 分支)中,如果值为 NONE,则不会设置同站点属性。这会导致 [Chrome &gt; 80](https://www.chromium.org/updates/same-site) 中的会话 cookie 出现一些问题。它已于 2019 年 10 月修复。 [请参阅错误报告](https://bz.apache.org/bugzilla/show_bug.cgi?id=63865) ([PR #219](https://github.com/阿帕奇/tomcat/拉/219)) (10认同)

Pun*_*eri 1

找到了这个问题的答案:

  1. 编辑tomcat/conf/context.xml
  2. 以下行中的更新CookieProcessor元素表示sameSiteCookiesHTTP 响应标头中的设置set-cookie
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" sameSiteCookies="strict" />
Run Code Online (Sandbox Code Playgroud)

  • 一般来说,您不应该编辑“tomcat/conf/context.xml”。应该有一种方法可以让它在单个应用程序中工作。 (5认同)
  • 尝试一下看看是否也适用于 Tomcat &lt;8.5.42。它没。因此,无论如何,我还需要更新到较新的 Tomcat,以将“SameSite=None;Secure”添加到我的 Set-Cookie 标头中。 (2认同)