Cookie 处理器组件

目录

简介

CookieProcessor 元素表示一个组件,该组件将接收到的 cookie 头解析为通过 HttpServletRequest.getCookies() 可访问的 jakarta.servlet.http.Cookie 对象,并将通过 HttpServletResponse.addCookie() 添加到响应中的 jakarta.servlet.http.Cookie 对象转换为返回给客户端的 HTTP 头。

CookieProcessor 元素可以嵌套在 Context 组件内。如果未包含,将自动创建一个默认实现。

属性

通用属性

所有 CookieProcessor 实现都支持以下属性

属性描述
className

要使用的实现的 Java 类名。此G类必须实现 org.apache.tomcat.util.http.CookieProcessor 接口。如果未指定,将使用标准值(定义如下)。

标准实现

CookieProcessor 的标准实现是 org.apache.tomcat.util.http.Rfc6265CookieProcessor

此 cookie 处理器基于 RFC6265,并进行了以下更改以支持更好的互操作性:

  • 允许 cookie-octet 中出现 0x80 到 0xFF 的值,以支持 HTML 5 中使用的 UTF-8 编码的 cookie 值。
  • 对于没有值的 cookie,名称后不需要“=”,因为某些浏览器不发送它。

RFC 6265 cookie 处理器通常比旧版 cookie 解析器更宽松。特别是:

  • 在 cookie 值中始终允许使用“=”和“/”字符。
  • 始终允许仅有名称的 cookie。
  • cookie 头始终保留。

RFC 6265 Cookie 处理器支持以下附加属性。

属性描述
cookiesWithoutEquals

确定从用户代理接收到的 cookie 在名称-值对不包含等号时应如何解释。默认值为 name,这意味着该 cookie 将被视为只有名称而没有值的 cookie。另一个选项是 ignore,这意味着该 cookie 将被忽略。从 Tomcat 12 开始,默认值将为 ignore

partitioned

是否在 cookie 上设置 Partitioned 标志?默认为 false

注意:作为 CHIPS 的一部分,用于指示分区 cookie 的属性名称尚未由 RFC 定义,并且一旦 RFC 中包含等效功能,可能会以不向后兼容的方式发生变化。

sameSiteCookies

启用设置同站(same-site)cookie 属性。

如果值为 unset,则不会设置同站 cookie 属性。这是默认值。

如果值为 none,则会设置同站 cookie 属性,并且 cookie 将始终在跨站请求中发送。

如果值为 lax,则浏览器仅在同站请求和跨站顶级 GET 请求中发送 cookie。

如果值为 strict,则浏览器阻止在任何跨站请求中发送 cookie。

嵌套组件

任何元素都不能嵌套在 CookieProcessor 中。

特殊功能

CookieProcessor 元素没有特殊功能。