クラス Cookie
- 実装されたすべてのインターフェース:
SerializableSE
,CloneableSE
Cookie には、名前、単一の値、コメント、パスおよびドメイン修飾子、最大年齢、バージョン番号などのオプションの属性があります。一部の Web ブラウザーには、オプション属性の処理メソッドにバグがあるため、サーブレットの相互運用性を改善するために慎重に使用してください。
サーブレットは、HttpServletResponse.addCookie(jakarta.servlet.http.Cookie)
メソッドを使用してブラウザーに Cookie を送信します。このメソッドは、HTTP レスポンスヘッダーにフィールドを追加して、Cookie を一度に 1 つずつブラウザーに送信します。ブラウザーは、Web サーバーごとに 20 の Cookie、合計 300 の Cookie をサポートすることが期待されており、Cookie のサイズをそれぞれ 4 KB に制限する場合があります。
ブラウザーは、HTTP リクエストヘッダーにフィールドを追加することにより、サーブレットに Cookie を返します。HttpServletRequest.getCookies()
メソッドを使用して、リクエストから Cookie を取得できます。いくつかの Cookie は同じ名前でもパス属性が異なる場合があります。
Cookie は、Cookie を使用する Web ページのキャッシュに影響します。HTTP 1.0 は、このクラスで作成された Cookie を使用するページをキャッシュしません。このクラスは、HTTP 1.1 で定義されたキャッシュ制御をサポートしていません。
このクラスは、RFC 6265 で定義された Cookie をサポートします。
- 作成者:
- Various
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明clone()
この Cookie のコピーを返す標準のjava.lang.Object.clone
メソッドをオーバーライドします。boolean
getAttribute
(StringSE name) 指定された名前に関連付けられた Cookie 属性の値を取得します。setAttribute(String, String)
を介して設定されたすべての Cookie 属性の変更不可能なマッピングと、version
を除く事前定義された setter メソッドを返します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。この Cookie のドメイン名を取得します。int
この Cookie の最大経過時間を秒単位で取得します。getName()
Cookie の名前を返します。getPath()
ブラウザーがこの Cookie を返すサーバー上のパスを返します。boolean
ブラウザーが安全なプロトコルでのみ Cookie を送信している場合はtrue
を返し、ブラウザーが任意のプロトコルを使用して Cookie を送信できる場合はfalse
を返します。getValue()
この Cookie の現在の値を取得します。int
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。int
hashCode()
boolean
この Cookie が HttpOnly としてマークされているかどうかを確認します。void
setAttribute
(StringSE name, StringSE value) 指定された名前に関連付けられた Cookie 属性の値を設定します。void
setComment
(StringSE purpose) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。void
この Cookie が提示されるドメインを指定します。void
setHttpOnly
(boolean httpOnly) この Cookie を HttpOnly としてマークまたはマーク解除します。void
setMaxAge
(int expiry) この Cookie の最大有効期間を秒単位で設定します。void
クライアントが Cookie を返す先の Cookie のパスを指定します。void
setSecure
(boolean flag) Cookie を HTTPS や SSL などの安全なプロトコルのみを使用して送信するかどうかをブラウザーに示します。void
この Cookie に新しい値を割り当てます。void
setVersion
(int v) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。toString()
コンストラクターの詳細
Cookie
指定された名前と値で Cookie を構築します。名前は RFC 6265 に準拠する必要があります。ただし、ベンダーは、元の Netscape Cookie 仕様に準拠した Cookie 名を受け入れる構成オプションを提供する場合があります。
Cookie が作成されると、Cookie の名前は変更できません。
値は、サーバーが送信することを選択したものであれば何でもかまいません。その値はおそらくサーバーにとってのみ重要です。Cookie の値は、
setValue
メソッドを使用して作成後に変更できます。- パラメーター:
name
- クッキーの名前value
- クッキーの値- 例外:
IllegalArgumentExceptionSE
- Cookie 名が null または空であるか、不正な文字(コンマ、スペース、セミコロンなど)を含んでいる場合、Cookie プロトコルで使用するために予約されているトークンと一致する場合- 関連事項:
メソッドの詳細
setComment
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。呼び出された場合、このメソッドは効果がありません。
- パラメーター:
purpose
- このパラメーターは無視されます- 関連事項:
getComment
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。- 戻り値:
- 常に
null
- 関連事項:
setDomain
この Cookie が提示されるドメインを指定します。ドメイン名の形式は RFC 6265 で指定されています。デフォルトでは、Cookie はそれを送信したサーバーにのみ返されます。
- パラメーター:
domain
- この Cookie が表示されるドメイン名。フォームは RFC 6265 に準拠しています- 関連事項:
getDomain
この Cookie のドメイン名を取得します。ドメイン名は、RFC 6265 に従ってフォーマットされます。
- 戻り値:
- この Cookie のドメイン名
- 関連事項:
setMaxAge
public void setMaxAge(int expiry) この Cookie の最大有効期間を秒単位で設定します。正の値は、その秒数が経過すると Cookie が期限切れになることを示します。値は、Cookie の現在の年齢ではなく、Cookie が期限切れになる最大年齢であることに注意してください。
負の値は、Cookie が永続的に保存されず、Web ブラウザーが終了したときに削除されることを意味します。値がゼロの場合、Cookie は削除されます。
- パラメーター:
expiry
- Cookie の最大有効期間を秒単位で指定する整数。負の場合、Cookie は保存されません。ゼロの場合、Cookie を削除します- 関連事項:
getMaxAge
public int getMaxAge()この Cookie の最大経過時間を秒単位で取得します。デフォルトでは、
-1
が返されます。これは、ブラウザーがシャットダウンするまで Cookie が保持されることを示します。- 戻り値:
- Cookie の最大有効期間を秒単位で指定する整数。負の場合、ブラウザーがシャットダウンするまでクッキーが保持されることを意味します
- 関連事項:
setPath
クライアントが Cookie を返す先の Cookie のパスを指定します。Cookie は、指定したディレクトリ内のすべてのページと、そのディレクトリのサブディレクトリ内のすべてのページに表示されます。Cookie のパスには、Cookie を設定するサーブレット(/catalog下にあるサーバー上のすべてのディレクトリに Cookie が表示されます。
Cookie のパス名の設定の詳細については、RFC 6265 を参照してください。
- パラメーター:
uri
- パスを指定するString
- 関連事項:
getPath
ブラウザーがこの Cookie を返すサーバー上のパスを返します。Cookie は、サーバー上のすべてのサブパスに表示されます。- 戻り値:
- サーブレット名を含むパスを指定する
String
(例: /catalog - 関連事項:
setSecure
public void setSecure(boolean flag) Cookie を HTTPS や SSL などの安全なプロトコルのみを使用して送信するかどうかをブラウザーに示します。デフォルト値は
false
です。- パラメーター:
flag
-true
の場合、安全なプロトコルを使用している場合にのみ、ブラウザーからサーバーにクッキーを送信します。false
の場合、任意のプロトコルで送信されます- 関連事項:
getSecure
public boolean getSecure()ブラウザーが安全なプロトコルでのみ Cookie を送信している場合はtrue
を返し、ブラウザーが任意のプロトコルを使用して Cookie を送信できる場合はfalse
を返します。- 戻り値:
- ブラウザーが安全なプロトコルを使用する場合は
true
、それ以外の場合はfalse
- 関連事項:
getName
Cookie の名前を返します。作成後に名前を変更することはできません。- 戻り値:
- クッキーの名前
setValue
この Cookie に新しい値を割り当てます。バイナリ値を使用する場合は、BASE64 エンコードを使用できます。
バージョン 0 クッキーでは、値に空白、括弧、括弧、等号、コンマ、二重引用符、スラッシュ、疑問符、アットマーク、コロン、セミコロンを含めることはできません。空の値は、すべてのブラウザーで同じように動作しない場合があります。
- パラメーター:
newValue
- クッキーの新しい値- 関連事項:
getValue
この Cookie の現在の値を取得します。- 戻り値:
- この Cookie の現在の値
- 関連事項:
getVersion
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。- 戻り値:
- 常に 0
- 関連事項:
setVersion
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。これは、RFC 6265 では不要になりました。RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。呼び出された場合、このメソッドは効果がありません。
- パラメーター:
v
- このパラメーターは無視されます- 関連事項:
clone
この Cookie のコピーを返す標準のjava.lang.Object.clone
メソッドをオーバーライドします。setHttpOnly
public void setHttpOnly(boolean httpOnly) この Cookie を HttpOnly としてマークまたはマーク解除します。httpOnly が true に設定されている場合、この Cookie は HttpOnly 属性を追加して HttpOnly としてマークされます。
HttpOnly Cookie は、クライアント側のスクリプトコードにさらされることは想定されていないため、特定の種類のクロスサイトスクリプト攻撃を軽減するのに役立つ可能性があります。
- パラメーター:
httpOnly
- この Cookie が HttpOnly としてマークされる場合は true、そうでない場合は false- 導入:
- Servlet 3.0
isHttpOnly
public boolean isHttpOnly()この Cookie が HttpOnly としてマークされているかどうかを確認します。- 戻り値:
- この Cookie が HttpOnly としてマークされている場合は true、そうでない場合は false
- 導入:
- Servlet 3.0
setAttribute
指定された名前に関連付けられた Cookie 属性の値を設定します。これは、
version
を除いて、現在のバージョンに getter/setter ペアがすでに存在する事前定義された属性と同期する必要があります。例:cookie.setAttribute("domain", domain)
が呼び出されると、cookie.getDomain()
は正確にその値を返す必要があり、その逆も同様です。空の文字列の値を持つ属性は、
Cookie
インスタンスから生成されたすべてのSet-Cookie
ヘッダーに"attribute-name"
(名前も値もない Cookie 属性) として表示されます。setAttribute("name", "value"); // becomes "name=value;" setAttribute("name", ""); // becomes "name;" setAttribute("name", null); // removes "name" from the cookie setAttribute("HttpOnly", ""); // becomes "HttpOnly;" setAttribute("Partitioned", ""); // becomes "Partitioned; setAttribute("SameSite", "Strict"); // becomes "SameSite=Strict;"
- パラメーター:
name
- 値を設定する Cookie 属性の名前。大文字と小文字は区別されませんvalue
- 指定された名前に関連付けられた Cookie 属性の値。null
にすることができ、指定された名前の属性が存在する場合は削除します。- 例外:
IllegalArgumentExceptionSE
- Cookie 名が null または空であるか、無効な文字 (コンマ、スペース、セミコロンなど) が含まれているか、Cookie プロトコルで使用するために予約されているトークンと一致する場合。NumberFormatExceptionSE
- Cookie が数値を持つ既知のフィールド (Max-Age など) であるが、値を解析できない場合。- 導入:
- Servlet 6.0
getAttribute
指定された名前に関連付けられた Cookie 属性の値を取得します。これは、
version
を除いて、現在のバージョンに getter/setter ペアがすでに存在する事前定義された属性と同期する必要があります。例:cookie.setAttribute("domain", domain)
が呼び出されると、cookie.getDomain()
は正確にその値を返す必要があり、その逆も同様です。- パラメーター:
name
- 値を取得する Cookie 属性の名前。大文字と小文字は区別されません- 戻り値:
- 指定された名前に関連付けられた Cookie 属性の値
- 導入:
- Servlet 6.0
getAttributes
setAttribute(String, String)
を介して設定されたすべての Cookie 属性の変更不可能なマッピングと、version
を除く事前定義された setter メソッドを返します。- 戻り値:
setAttribute(String, String)
および事前定義された setter メソッド (version
を除く) を介して設定されたすべての Cookie 属性の変更不可能なマッピング- 導入:
- Servlet 6.0
hashCode
public int hashCode()equals
toString