パッケージ jakarta.servlet.http

クラス Cookie

java.lang.ObjectSE
jakarta.servlet.http.Cookie
実装されたすべてのインターフェース:
SerializableSECloneableSE

public class Cookie extends ObjectSE implements CloneableSE, SerializableSE
Cookie を作成します。これは、サーブレットによって Web ブラウザーに送信され、ブラウザーによって保存され、後でサーバーに送り返される少量の情報です。Cookie の値はクライアントを一意に識別できるため、Cookie は一般にセッション管理に使用されます。

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
関連事項:
  • コンストラクターの概要

    コンストラクター
    コンストラクター
    説明
    Cookie(StringSE name, StringSE value)
    指定された名前と値で Cookie を構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    この Cookie のコピーを返す標準の java.lang.Object.clone メソッドをオーバーライドします。
    boolean
    指定された名前に関連付けられた Cookie 属性の値を取得します。
    setAttribute(String, String) を介して設定されたすべての Cookie 属性の変更不可能なマッピングと、version を除く事前定義された setter メソッドを返します。
    非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
    これは、RFC 6265 では不要になりました。
    この Cookie のドメイン名を取得します。
    int
    この Cookie の最大経過時間を秒単位で取得します。
    Cookie の名前を返します。
    ブラウザーがこの Cookie を返すサーバー上のパスを返します。
    boolean
    ブラウザーが安全なプロトコルでのみ Cookie を送信している場合は true を返し、ブラウザーが任意のプロトコルを使用して Cookie を送信できる場合は false を返します。
    この Cookie の現在の値を取得します。
    int
    非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
    これは、RFC 6265 では不要になりました。
    int
    boolean
    この Cookie が HttpOnly としてマークされているかどうかを確認します。
    void
    指定された名前に関連付けられた Cookie 属性の値を設定します。
    void
    非推奨、削除予定: この 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
    setValue(StringSE newValue)
    この Cookie に新しい値を割り当てます。
    void
    setVersion(int v)
    非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
    これは、RFC 6265 では不要になりました。

    クラス java.lang.ObjectSE から継承されたメソッド

    finalize, getClass, notify, notifyAll, wait, waitSE, waitSE
  • コンストラクターの詳細

    • Cookie

      public Cookie(StringSE name, StringSE value)
      指定された名前と値で Cookie を構築します。

      名前は RFC 6265 に準拠する必要があります。ただし、ベンダーは、元の Netscape Cookie 仕様に準拠した Cookie 名を受け入れる構成オプションを提供する場合があります。

      Cookie が作成されると、Cookie の名前は変更できません。

      値は、サーバーが送信することを選択したものであれば何でもかまいません。その値はおそらくサーバーにとってのみ重要です。Cookie の値は、setValue メソッドを使用して作成後に変更できます。

      パラメーター:
      name - クッキーの名前
      value - クッキーの値
      例外:
      IllegalArgumentExceptionSE - Cookie 名が null または空であるか、不正な文字(コンマ、スペース、セミコロンなど)を含んでいる場合、Cookie プロトコルで使用するために予約されているトークンと一致する場合
      関連事項:
  • メソッドの詳細

    • setComment

      @DeprecatedSE(since="Servlet 6.0", forRemoval=true) public void setComment(StringSE purpose)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。

      呼び出された場合、このメソッドは効果がありません。

      パラメーター:
      purpose - このパラメーターは無視されます
      関連事項:
    • getComment

      @DeprecatedSE(since="Servlet 6.0", forRemoval=true) public StringSE getComment()
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。
      戻り値:
      常に null
      関連事項:
    • setDomain

      public void setDomain(StringSE domain)
      この Cookie が提示されるドメインを指定します。

      ドメイン名の形式は RFC 6265 で指定されています。デフォルトでは、Cookie はそれを送信したサーバーにのみ返されます。

      パラメーター:
      domain - この Cookie が表示されるドメイン名。フォームは RFC 6265 に準拠しています
      関連事項:
    • getDomain

      public StringSE 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

      public void setPath(StringSE uri)
      クライアントが Cookie を返す先の Cookie のパスを指定します。

      Cookie は、指定したディレクトリ内のすべてのページと、そのディレクトリのサブディレクトリ内のすべてのページに表示されます。Cookie のパスには、Cookie を設定するサーブレット(/catalog下にあるサーバー上のすべてのディレクトリに Cookie が表示されます。

      Cookie のパス名の設定の詳細については、RFC 6265 を参照してください。

      パラメーター:
      uri - パスを指定する String 
      関連事項:
    • getPath

      public StringSE 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

      public StringSE getName()
      Cookie の名前を返します。作成後に名前を変更することはできません。
      戻り値:
      クッキーの名前
    • setValue

      public void setValue(StringSE newValue)
      この Cookie に新しい値を割り当てます。

      バイナリ値を使用する場合は、BASE64 エンコードを使用できます。

      バージョン 0 クッキーでは、値に空白、括弧、括弧、等号、コンマ、二重引用符、スラッシュ、疑問符、アットマーク、コロン、セミコロンを含めることはできません。空の値は、すべてのブラウザーで同じように動作しない場合があります。

      パラメーター:
      newValue - クッキーの新しい値
      関連事項:
    • getValue

      public StringSE getValue()
      この Cookie の現在の値を取得します。
      戻り値:
      この Cookie の現在の値
      関連事項:
    • getVersion

      @DeprecatedSE(since="Servlet 6.0", forRemoval=true) public int getVersion()
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。
      戻り値:
      常に 0
      関連事項:
    • setVersion

      @DeprecatedSE(since="Servlet 6.0", forRemoval=true) public void setVersion(int v)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      RFC 6265 のサポートの採用により、このメソッドは使用されなくなりました。

      呼び出された場合、このメソッドは効果がありません。

      パラメーター:
      v - このパラメーターは無視されます
      関連事項:
    • clone

      public ObjectSE clone()
      この Cookie のコピーを返す標準の java.lang.Object.clone メソッドをオーバーライドします。
      オーバーライド:
      クラス ObjectSEclone 
    • setHttpOnly

      public void setHttpOnly(boolean httpOnly)
      この Cookie を HttpOnly としてマークまたはマーク解除します。

      httpOnlytrue に設定されている場合、この 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

      public void setAttribute(StringSE name, StringSE value)
      指定された名前に関連付けられた 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

      public StringSE getAttribute(StringSE name)
      指定された名前に関連付けられた Cookie 属性の値を取得します。

      これは、version を除いて、現在のバージョンに getter/setter ペアがすでに存在する事前定義された属性と同期する必要があります。例: cookie.setAttribute("domain", domain) が呼び出されると、cookie.getDomain() は正確にその値を返す必要があり、その逆も同様です。

      パラメーター:
      name - 値を取得する Cookie 属性の名前。大文字と小文字は区別されません
      戻り値:
      指定された名前に関連付けられた Cookie 属性の値
      導入:
      Servlet 6.0
    • getAttributes

      public MapSE<StringSE,StringSE> getAttributes()
      setAttribute(String, String) を介して設定されたすべての Cookie 属性の変更不可能なマッピングと、version を除く事前定義された setter メソッドを返します。
      戻り値:
      setAttribute(String, String) および事前定義された setter メソッド (version を除く) を介して設定されたすべての Cookie 属性の変更不可能なマッピング
      導入:
      Servlet 6.0
    • hashCode

      public int hashCode()
      オーバーライド:
      クラス ObjectSEhashCode 
    • equals

      public boolean equals(ObjectSE obj)
      オーバーライド:
      クラス ObjectSEequalsSE 
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString