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 八位元組中允許值 0x80 到 0xFF,以支援 HTML 5 使用的 Cookie 值中的 UTF-8。
  • 對於沒有值的 Cookie,名稱後不需要「=」,因為有些瀏覽器不會傳送它。

RFC 6265 Cookie 處理器通常比舊版 Cookie 解析器寬鬆。特別是

  • Cookie 值中永遠允許「=」和「/」字元。
  • 永遠允許只有名稱的 Cookie。
  • Cookie 標頭始終會保留。

RFC 6265 Cookie 處理器支援下列其他屬性。

屬性 說明
partitioned

是否應在 Cookie 上設定 Partitioned 標記?預設為 false

注意:用於指出分區 Cookie 的屬性名稱,作為 CHIPS 的一部分,未由 RFC 定義,且在 RFC 中包含等效功能後,可能會以非向下相容的方式變更。

sameSiteCookies

啟用設定同站 Cookie 屬性。

如果值為 unset,則不會設定同站 Cookie 屬性。這是預設值。

如果值為 none,則會設定同站 Cookie 屬性,且 Cookie 會在跨站點要求中傳送。

如果值為 lax,則瀏覽器只會在同站要求和跨站點頂層 GET 要求中傳送 Cookie。

如果值為 strict,則瀏覽器會防止在任何跨站點要求中傳送 Cookie。

巢狀元件

不得在 CookieProcessor 內嵌任何元素。

特殊功能

CookieProcessor 元素沒有關聯的特殊功能。