Cookie Processor コンポーネント

目次

はじめに

CookieProcessor 要素は、受信したクッキーヘッダを 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 です。

このクッキープロセッサはRFC6265に基づいていますが、より良い相互運用性をサポートするために以下の変更が加えられています

  • HTML 5で使用されるクッキー値におけるUTF-8の使用をサポートするため、cookie-octet では 0x80 から 0xFF の値が許可されます。
  • 値のないクッキーの場合、一部のブラウザが送信しないため、名前の後に'='は必須ではありません。

RFC 6265 クッキープロセッサは、レガシーなクッキーパーサーよりも一般的に寛容です。特に、

  • クッキー値では'='と'/'文字が常に許可されます。
  • 名前のみのクッキーは常に許可されます。
  • クッキーヘッダは常に保持されます。

RFC 6265 Cookie Processor は、以下の追加属性をサポートします。

属性説明
cookiesWithoutEquals

ユーザーエージェントから受信したクッキーの、名前と値のペアに等号が含まれていない場合の解釈方法を決定します。デフォルト値はnameであり、これはクッキーが名前のみで値がないクッキーとして扱われることを意味します。もう一つのオプションはignoreであり、これはクッキーが無視されることを意味します。Tomcat 12 以降では、デフォルトはignoreになります。

partitioned

クッキーにPartitionedフラグを設定するかどうか?デフォルトはfalseです。

注記:CHIPSの一部としてパーティション化されたクッキーを示すために使用される属性名はRFCによって定義されておらず、同等の機能がRFCに含まれた場合、後方互換性のない方法で変更される可能性があります。

sameSiteCookies

Same-Site クッキー属性の設定を有効にします。

値がunsetの場合、Same-Site クッキー属性は設定されません。これがデフォルト値です。

値がnoneの場合、Same-Site クッキー属性が設定され、クッキーは常にクロスサイトリクエストで送信されます。

値がlaxの場合、ブラウザは同サイトリクエストとクロスサイトトップレベルのGETリクエストでのみクッキーを送信します。

値がstrictの場合、ブラウザはあらゆるクロスサイトリクエストでのクッキーの送信を防止します。

ネストされたコンポーネント

CookieProcessor の内部に要素をネストすることはできません。

特殊な機能

CookieProcessor 要素には特別な機能は関連付けられていません。