Cookie 处理器组件

目录

简介

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

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

属性

通用属性

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

属性 说明
className

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

标准实现

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

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

  • cookie-octet 中允许使用 0x80 到 0xFF 的值,以支持 HTML 5 中使用的 Cookie 值中的 UTF-8。
  • 对于没有值的 cookie,一些浏览器不会发送“=”后缀,因此名称后不需要“=”。

RFC 6265 cookie 处理器通常比旧版 cookie 解析器更宽松。具体而言

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

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

属性 说明
partitioned

是否应在 cookie 上设置分区标志?默认为 false

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

sameSiteCookies

启用设置同站 cookie 属性。

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

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

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

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

嵌套组件

CookieProcessor 中不得嵌套任何元素。

特殊功能

CookieProcessor 元素不具有任何特殊功能。