モジュール java.base
パッケージ java.net

クラスHttpCookie

java.lang.Object
java.net.HttpCookie
すべての実装されたインタフェース:
Cloneable

public final class HttpCookie extends Object implements Cloneable
HttpCookieオブジェクトは、サーバーとユーザー・エージェントとの間で状態情報を伝達するHTTP Cookieを表します。 Cookieは、ステートフル・セッションを作成する目的で広く採用されています。

HTTP Cookieの仕様には次の3つがあります。

Netscapeドラフト
RFC 2109 - http://www.ietf.org/rfc/rfc2109.txt
RFC 2965 - http://www.ietf.org/rfc/rfc2965.txt

HttpCookieクラスは、これら3つの形式の構文をすべて受け付けることができます。

導入されたバージョン:
1.6
  • コンストラクタのサマリー

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

    修飾子と型
    メソッド
    説明
    このオブジェクトのコピーを作成して返します。
    static boolean
    domainMatches(String domain, String host)
    あるホスト名があるドメインに含まれるかどうかをチェックするためのユーティリティ・メソッド。
    boolean
    2つのHTTP Cookieが等しいかどうかを判定します。
    このCookieの目的を説明するコメントを返します。Cookieにコメントがない場合は、nullを返します。
    このCookieの目的を説明するコメントURLを返します。このCookieにコメントURLがない場合はnullを返します。
    boolean
    Cookieの破棄属性を返します
    このCookieに設定されたドメイン名を返します。
    long
    Cookieの最長有効期間を秒数で返します。
    Cookieの名前を返します。
    ブラウザがこのCookieを返す先となる、サーバー上のパスを返します。
    Cookieのポート・リスト属性を返します
    boolean
    このCookieの送信をセキュアなプロトコルに制限すべき場合はtrue、どのようなプロトコルを使用して送信してもかまわない場合はfalseを返します。
    Cookieの値を返します。
    int
    このCookieが準拠するプロトコルのバージョンを返します。
    boolean
    このHTTP Cookieの有効期限が切れているかどうかを報告します。
    int
    このHTTP Cookieのハッシュ・コードを返します。
    boolean
    このCookieがHttpOnly属性を含む場合はtrueを返します。
    parse(String header)
    set-cookieまたはset-cookie2ヘッダー文字列からCookieを構築します。
    void
    setComment(String purpose)
    Cookieの目的を説明するコメントを指定します。
    void
    Cookieの目的を説明するコメントURLを指定します。
    void
    setDiscard(boolean discard)
    ユーザー・エージェントがCookieを無条件に破棄すべきかどうかを指定します。
    void
    setDomain(String pattern)
    このCookieが提示されるドメインを指定します。
    void
    setHttpOnly(boolean httpOnly)
    CookieをHTTP Onlyとみなすべきかどうかを示します。
    void
    setMaxAge(long expiry)
    Cookieの最長有効期間を秒数で設定します。
    void
    クライアントがCookieを返す必要のあるCookieのパスを指定します。
    void
    Cookieのポート・リストを指定します。このリストは、CookieをCookieヘッダー内に収めて送り返す際に使用できるポート(複数可)を制約します。
    void
    setSecure(boolean flag)
    CookieをHTTPSやSSLなどのセキュアなプロトコルのみを使用して送信するべきかどうかを示します。
    void
    setValue(String newValue)
    Cookieの作成後に、Cookieに新しい値を割り当てます。
    void
    setVersion(int v)
    このCookieが準拠するCookieプロトコルのバージョンを設定します。
    このCookieのCookieヘッダー文字列表現を構築します。その形式は、対応するCookie仕様で定義されているものですが、先頭の「Cookie」トークンは付きません。

    クラス java.lang.Objectで宣言されたメソッド

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

    • HttpCookie

      public HttpCookie(String name, String value)
      指定された名前と値を持つCookieを構築します。

      名前はRFC 2965に準拠している必要があります。 つまり、ASCIIの英数文字のみを含み、カンマ、セミコロン、空白を含むことはできず、$文字が先頭にあってはいけません。 Cookieの作成後に名前を変更することはできません。

      値には特に制限はありません。 その値は通常、サーバーにとってのみ意味があります。 Cookieの値は、作成後にsetValueメソッドを使用して変更できます。

      特に指定しないかぎり、CookieはRFC 2965のCookie仕様に従って作成されます。 バージョンを変更するにはsetVersionメソッドを使用します。

      パラメータ:
      name−Cookieの名前を指定するString
      value−Cookieの値を指定するString
      例外:
      IllegalArgumentException - Cookie名に不正な文字が含まれている場合
      NullPointerException - namenullである場合
      関連項目:
  • メソッドの詳細

    • parse

      public static List<HttpCookie> parse(String header)
      set-cookieまたはset-cookie2ヘッダー文字列からCookieを構築します。 RFC 2965セクション3.2.2のset-cookie2構文によれば、1つのヘッダー行に複数のCookie定義を含めることができます。それで、これは別のコンストラクタではなく、staticユーティリティ・メソッドになっています。
      パラメータ:
      header−set-cookieヘッダーを指定するString ヘッダーは、「set-cookie」または「set-cookie2」トークンで始まっているか、開始トークンをまったく持たないか、のいずれかにすべきである。
      戻り値:
      ヘッダー行文字列から解析されたCookieのリスト
      例外:
      IllegalArgumentException - ヘッダー文字列がCookie仕様の構文に違反しているか、Cookie名に不正な文字が含まれている場合。
      NullPointerException−ヘッダー文字列がnullの場合
    • hasExpired

      public boolean hasExpired()
      このHTTP Cookieの有効期限が切れているかどうかを報告します。
      戻り値:
      このHTTP Cookieの有効期限が切れていることを示す場合はtrue。そうでない場合はfalse
    • setComment

      public void setComment(String purpose)
      Cookieの目的を説明するコメントを指定します。 コメントは、ブラウザがCookieをユーザーに表示する場合に役立ちます。 Netscapeバージョン0のCookieでは、コメントはサポートされません。
      パラメータ:
      purpose−ユーザーに表示するコメントを指定するString
      関連項目:
    • getComment

      public String getComment()
      このCookieの目的を説明するコメントを返します。Cookieにコメントがない場合は、nullを返します。
      戻り値:
      コメントが格納されたString。コメントがない場合はnull
      関連項目:
    • setCommentURL

      public void setCommentURL(String purpose)
      Cookieの目的を説明するコメントURLを指定します。 コメントURLは、ブラウザがCookieをユーザーに表示する場合に役立ちます。 コメントURLはRFC 2965専用です。
      パラメータ:
      purpose - ユーザーに表示するコメントURLを指定するString
      関連項目:
    • getCommentURL

      public String getCommentURL()
      このCookieの目的を説明するコメントURLを返します。このCookieにコメントURLがない場合はnullを返します。
      戻り値:
      コメントURLが格納されたString。コメントがない場合はnull
      関連項目:
    • setDiscard

      public void setDiscard(boolean discard)
      ユーザー・エージェントがCookieを無条件に破棄すべきかどうかを指定します。 これは、RFC 2965専用の属性です。
      パラメータ:
      discardtrueは、Cookieを無条件に破棄することを示します
      関連項目:
    • getDiscard

      public boolean getDiscard()
      Cookieの破棄属性を返します
      戻り値:
      このCookieの破棄属性を表すboolean
      関連項目:
    • setPortlist

      public void setPortlist(String ports)
      Cookieのポート・リストを指定します。このリストは、CookieをCookieヘッダー内に収めて送り返す際に使用できるポート(複数可)を制約します。
      パラメータ:
      ports - ポート・リストを指定するString。これは数字のカンマ区切りリストです
      関連項目:
    • getPortlist

      public String getPortlist()
      Cookieのポート・リスト属性を返します
      戻り値:
      ポート・リストが格納されたString。存在しない場合はnull
      関連項目:
    • setDomain

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

      ドメイン名の形式は、RFC 2965によって指定されています。 ドメイン名は.foo.comのようにドットで始まり、指定されたドメイン・ネーム・システム(DNS)のゾーン内のサーバーがそのCookieを参照できることを示しています。たとえばこの場合、www.foo.comはCookieを参照できますが、a.b.foo.comはCookieを参照できません。 特に指定しないかぎり、Cookieはそれを送信したサーバーにのみ返されます。

      パラメータ:
      pattern−このCookieが可視となるドメイン名が格納されたString。形式はRFC 2965に従います
      関連項目:
    • getDomain

      public String getDomain()
      このCookieに設定されたドメイン名を返します。 ドメイン名の形式は、RFC 2965によって規定されています。
      戻り値:
      ドメイン名が格納されたString
      関連項目:
    • setMaxAge

      public void setMaxAge(long expiry)
      Cookieの最長有効期間を秒数で設定します。

      正の値を指定すると、その秒数が経過したあとにCookieが期限切れになります。 この値は、Cookieの現在の有効期間ではなく、Cookieの期限が切れるまでの最長の有効期間であることに注意してください。

      負の値を指定すると、Cookieは持続的に保持されずに、Webブラウザが終了したときに削除されます。 0の値を指定すると、Cookieが削除されます。

      パラメータ:
      expiry−Cookieの最長有効期間を秒数で指定する整数。0の場合、Cookieはすぐに破棄され、それ以外の場合、Cookieの最長有効期間は未定義となります。
      関連項目:
    • getMaxAge

      public long getMaxAge()
      Cookieの最長有効期間を秒数で返します。 デフォルトは-1です。これは、ブラウザがシャットダウンされるまでCookieが持続することを示します。
      戻り値:
      Cookieの最長有効期間を秒数で指定する整数
      関連項目:
    • setPath

      public void setPath(String uri)
      クライアントがCookieを返す必要のあるCookieのパスを指定します。

      指定されたディレクトリ内のすべてのページと、そのディレクトリのサブディレクトリ内のすべてのページに対して、Cookieが可視になります。 CookieのパスにはそのCookieを設定するサーブレットを含めてください。たとえば、/catalogを指定した場合、サーバー上の/catalogの下にあるすべてのディレクトリに対して、Cookieが可視になります。

      Cookieのパス名の設定方法についての詳細は、RFC 2965で調べてください。RFC 2109は、インターネットで公開されています。

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

      public String getPath()
      ブラウザがこのCookieを返す先となる、サーバー上のパスを返します。 サーバー上のすべてのサブパスに対して、Cookieが可視になります。
      戻り値:
      サーブレット名を含むパスを指定するString。たとえば、 /catalog
      関連項目:
    • setSecure

      public void setSecure(boolean flag)
      CookieをHTTPSやSSLなどのセキュアなプロトコルのみを使用して送信するべきかどうかを示します。

      デフォルト値はfalseです。

      パラメータ:
      flag - trueの場合、Cookieを送信できるのはHTTPSのようなセキュアなプロトコル上でのみです。 falseの場合、任意のプロトコル上で送信できます。
      関連項目:
    • getSecure

      public boolean getSecure()
      このCookieの送信をセキュアなプロトコルに制限すべき場合はtrue、どのようなプロトコルを使用して送信してもかまわない場合はfalseを返します。
      戻り値:
      Cookieを任意の標準プロトコル上で送信できる場合はfalse。その他の場合はtrue
      関連項目:
    • getName

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

      public void setValue(String newValue)
      Cookieの作成後に、Cookieに新しい値を割り当てます。 バイナリ値を使用する場合は、BASE64エンコーディングの使用をお薦めします。

      バージョン0のCookieの場合、空白、角カッコ、カッコ、等号、カンマ、二重引用符、スラッシュ、疑問符、単価記号、コロン、およびセミコロンを値に含めないようにしてください。 空の値を指定すると、ブラウザ間で異なる動作をする可能性があります。

      パラメータ:
      newValue−新しい値を指定するString
      関連項目:
    • getValue

      public String getValue()
      Cookieの値を返します。
      戻り値:
      Cookieの現在の値が格納されたString
      関連項目:
    • getVersion

      public int getVersion()
      このCookieが準拠するプロトコルのバージョンを返します。 バージョン1はRFC 2965/2109に準拠し、バージョン0はNetscapeによる元のCookieドラフト仕様に準拠します。 ブラウザから提供されるCookieは、そのブラウザのCookieバージョンを使用および識別します。
      戻り値:
      Cookieが元のNetscape仕様に準拠する場合は0、RFC 2965/2109に準拠する場合は1
      関連項目:
    • setVersion

      public void setVersion(int v)
      このCookieが準拠するCookieプロトコルのバージョンを設定します。 バージョン0は元のNetscape Cookie仕様に準拠します。 バージョン1はRFC 2965/2109に準拠します。
      パラメータ:
      v−Cookieが元のNetscape仕様に準拠すべきである場合は0、RFC 2965/2109に準拠すべきである場合は1
      例外:
      IllegalArgumentExceptionvが0、1のいずれでもない場合
      関連項目:
    • isHttpOnly

      public boolean isHttpOnly()
      このCookieがHttpOnly属性を含む場合はtrueを返します。 これは、JavaScriptのようなスクリプト・エンジンがCookieにアクセスできてはいけないことを意味します。
      戻り値:
      このCookieをHTTPOnlyとみなすべき場合はtrue
      関連項目:
    • setHttpOnly

      public void setHttpOnly(boolean httpOnly)
      CookieをHTTP Onlyとみなすべきかどうかを示します。 trueに設定されている場合、JavaScriptのようなスクリプト・エンジンがCookieにアクセスできてはいけないことを意味します。
      パラメータ:
      httpOnly - trueの場合はCookieをHTTPのみとします。つまり、HTTP要求の一部としてのみ可視となります。
      関連項目:
    • domainMatches

      public static boolean domainMatches(String domain, String host)
      あるホスト名があるドメインに含まれるかどうかをチェックするためのユーティリティ・メソッド。

      この概念については、Cookie仕様内で説明されています。 この概念を理解するには、まず、いくつかの用語を定義しておく必要があります。

      有効ホスト名=ホスト名にドットが含まれる場合はhostname、
      ドットが含まれない場合はhostname.local

      ホストAの名前がホストBの名前とドメイン一致するのは、次のいずれかが成り立つ場合です。

      • それらのホスト名文字列を文字列比較した結果が等しくなる
      • AがHDN文字列であり、NBの形式を持つ。ここで、Nは空でない名前文字列であり、Bは.B'の形式を持ち、B'はHDN文字列である。 (したがって、x.y.comは、.Y.comにはドメイン一致するが、Y.comにはドメイン一致しない。)

      ホストがドメインに含まれない(RFC 2965セクション3.3.2)のは、次のいずれかが成り立つ場合です。

      • Domain属性の値に埋込みドットが含まれておらず、その値が.localではない。
      • 要求ホストから派生した有効ホスト名が、Domain属性とドメイン一致しない。
      • 要求ホストがHDN (IPアドレスではない)であり、HDの形式を持つ。ここで、DはDomain属性の値であり、Hは1つ以上のドットを含む文字列である。

      • 要求ホストy.x.foo.comからのDomain=.foo.comのSet-Cookie2は拒否される。なぜなら、Hはy.xであり、ドットが含まれるからである。
      • 要求ホストx.foo.comからのDomain=.foo.comのSet-Cookie2は受け入れられる。
      • Domain=.comまたはDomain=.com. を含むSet-Cookie2は常に拒否される。なぜなら、埋込みドットが存在しないからである。
      • 要求ホストexampleからのDomain=.localのSet-Cookie2は受け入れられる。なぜなら、要求ホストの有効ホスト名はexample.localであり、example.localは.localにドメイン一致するからである。

      パラメータ:
      domain−ホスト名のチェックに使用するドメイン名
      host−問題のホスト名
      戻り値:
      それらがドメイン一致する場合はtrue、それ以外の場合はfalse
    • toString

      public String toString()
      このCookieのCookieヘッダー文字列表現を構築します。その形式は、対応するCookie仕様で定義されているものですが、先頭の「Cookie」トークンは付きません。
      オーバーライド:
      toString、クラスObject
      戻り値:
      Cookieの文字列形式。 この文字列は定義された形式を持つ
    • equals

      public boolean equals(Object obj)
      2つのHTTP Cookieが等しいかどうかを判定します。

      結果がtrueになるのは、2つのCookieが同じドメイン(大文字、小文字の区別なし)から送られてきたものであり、同じ名前(大文字、小文字の区別なし)を持ち、同じパス(大文字、小文字の区別あり)を持つ場合だけです。

      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj - 比較対象の参照オブジェクト。
      戻り値:
      2つのHTTP Cookieが互いに等しい場合はtrue。そうでない場合はfalse
      関連項目:
    • hashCode

      public int hashCode()
      このHTTP Cookieのハッシュ・コードを返します。 結果は、このCookieの3つの主要コンポーネントである名前、ドメイン、パスのハッシュ・コード値を合計したものになります。 すなわち、ハッシュ・コードは次の式の値です。
      getName().toLowerCase().hashCode()
      + getDomain().toLowerCase().hashCode()
      + getPath().hashCode()
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このHTTP Cookieのハッシュ・コード
      関連項目:
    • clone

      public Object clone()
      このオブジェクトのコピーを作成して返します。
      オーバーライド:
      clone、クラスObject
      戻り値:
      このHTTP Cookieの複製
      関連項目: