パッケージ 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 を構築します。
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   具象メソッド   非推奨のメソッド  
      修飾子と型 メソッド 説明
      ObjectSEclone()
      この Cookie のコピーを返す標準の java.lang.Object.clone メソッドをオーバーライドします。
      booleanequals​(ObjectSE obj)
      StringSEgetAttribute​(StringSE name)
      指定された名前に関連付けられた Cookie 属性の値を取得します。
      MapSE<StringSE,​StringSE>getAttributes()
      setAttribute(String, String) を介して設定されたすべての Cookie 属性の変更不可能なマッピングと、version を除く事前定義された setter メソッドを返します。
      StringSEgetComment()
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      StringSEgetDomain()
      この Cookie のドメイン名を取得します。
      intgetMaxAge()
      この Cookie の最大経過時間を秒単位で取得します。
      StringSEgetName()
      Cookie の名前を返します。
      StringSEgetPath()
      ブラウザーがこの Cookie を返すサーバー上のパスを返します。
      booleangetSecure()
      ブラウザーが安全なプロトコルでのみ Cookie を送信している場合は true を返し、ブラウザーが任意のプロトコルを使用して Cookie を送信できる場合は false を返します。
      StringSEgetValue()
      この Cookie の現在の値を取得します。
      intgetVersion()
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      inthashCode()
      booleanisHttpOnly()
      この Cookie が HttpOnly としてマークされているかどうかを確認します。
      voidsetAttribute​(StringSE name, StringSE value)
      指定された名前に関連付けられた Cookie 属性の値を設定します。
      voidsetComment​(StringSE purpose)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      voidsetDomain​(StringSE domain)
      この Cookie が提示されるドメインを指定します。
      voidsetHttpOnly​(boolean httpOnly)
      この Cookie を HttpOnly としてマークまたはマーク解除します。
      voidsetMaxAge​(int expiry)
      この Cookie の最大有効期間を秒単位で設定します。
      voidsetPath​(StringSE uri)
      クライアントが Cookie を返す先の Cookie のパスを指定します。
      voidsetSecure​(boolean flag)
      Cookie を HTTPS や SSL などの安全なプロトコルのみを使用して送信するかどうかをブラウザーに示します。
      voidsetValue​(StringSE newValue)
      この Cookie に新しい値を割り当てます。
      voidsetVersion​(int v)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      これは、RFC 6265 では不要になりました。
      StringSEtoString()
    • コンストラクターの詳細

      • Cookie

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

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

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

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

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

      • setComment

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

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

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

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

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

        ドメイン名の形式は RFC 6265 で指定されています。ドメイン名はドット (.foo.com) で始まり、指定されたドメインネームシステム (DNS) ゾーン (たとえば、www.foo.com、ただし a.b.foo.com ではなく) 内のサーバーに Cookie が表示されることを意味します)。デフォルトでは、Cookie は送信元のサーバーにのみ返されます。

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

        public StringSE getDomain()
        この Cookie のドメイン名を取得します。

        ドメイン名は、RFC 6265 に従ってフォーマットされます。

        戻り値:
        この Cookie のドメイン名
        関連事項:
        setDomain(java.lang.String)
      • setMaxAge

        public void setMaxAge​(int expiry)
        この Cookie の最大有効期間を秒単位で設定します。

        正の値は、その秒数が経過すると Cookie が期限切れになることを示します。値は、Cookie の現在の年齢ではなく、Cookie が期限切れになる最大年齢であることに注意してください。

        負の値は、Cookie が永続的に保存されず、Web ブラウザーが終了したときに削除されることを意味します。値がゼロの場合、Cookie は削除されます。

        パラメーター:
        expiry - Cookie の最大有効期間を秒単位で指定する整数。負の場合、Cookie は保存されません。ゼロの場合、Cookie を削除します
        関連事項:
        getMaxAge()
      • getMaxAge

        public int getMaxAge()
        この Cookie の最大経過時間を秒単位で取得します。

        デフォルトでは、-1 が返されます。これは、ブラウザーがシャットダウンするまで Cookie が保持されることを示します。

        戻り値:
        Cookie の最大有効期間を秒単位で指定する整数。負の場合、ブラウザーがシャットダウンするまでクッキーが保持されることを意味します
        関連事項:
        setMaxAge(int)
      • setPath

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

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

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

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

        public StringSE getPath()
        ブラウザーがこの Cookie を返すサーバー上のパスを返します。Cookie は、サーバー上のすべてのサブパスに表示されます。
        戻り値:
        サーブレット名を含むパスを指定する String (例: /catalog
        関連事項:
        setPath(java.lang.String)
      • setSecure

        public void setSecure​(boolean flag)
        Cookie を HTTPS や SSL などの安全なプロトコルのみを使用して送信するかどうかをブラウザーに示します。

        デフォルト値は false です。

        パラメーター:
        flag - true の場合、安全なプロトコルを使用している場合にのみ、ブラウザーからサーバーにクッキーを送信します。false の場合、任意のプロトコルで送信されます
        関連事項:
        getSecure()
      • getSecure

        public boolean getSecure()
        ブラウザーが安全なプロトコルでのみ Cookie を送信している場合は true を返し、ブラウザーが任意のプロトコルを使用して Cookie を送信できる場合は false を返します。
        戻り値:
        ブラウザーが安全なプロトコルを使用する場合は true、それ以外の場合は false 
        関連事項:
        setSecure(boolean)
      • getName

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

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

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

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

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

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

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

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

        パラメーター:
        v - このパラメーターは無視されます
        関連事項:
        getVersion()
      • 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() は正確にその値を返す必要があり、その逆も同様です。

        パラメーター:
        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