- 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.txtHttpCookieクラスは、これら3つの形式の構文をすべて受け付けることができます。
- 導入されたバージョン:
- 1.6
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 HttpCookie(String name, String value)指定された名前と値を持つCookieを構築します。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 Objectclone()このオブジェクトのコピーを作成して返します。static booleandomainMatches(String domain, String host)あるホスト名があるドメインに含まれるかどうかをチェックするためのユーティリティ・メソッド。booleanequals(Object obj)2つのHTTP Cookieが等しいかどうかを判定します。StringgetComment()このCookieの目的を説明するコメントを返します。Cookieにコメントがない場合は、nullを返します。StringgetCommentURL()このCookieの目的を説明するコメントURLを返します。このCookieにコメントURLがない場合はnullを返します。booleangetDiscard()Cookieの破棄属性を返しますStringgetDomain()このCookieに設定されたドメイン名を返します。longgetMaxAge()Cookieの最長有効期間を秒数で返します。StringgetName()Cookieの名前を返します。StringgetPath()ブラウザがこのCookieを返す先となる、サーバー上のパスを返します。StringgetPortlist()Cookieのポート・リスト属性を返しますbooleangetSecure()このCookieの送信をセキュアなプロトコルに制限すべき場合はtrue、どのようなプロトコルを使用して送信してもかまわない場合はfalseを返します。StringgetValue()Cookieの値を返します。intgetVersion()このCookieが準拠するプロトコルのバージョンを返します。booleanhasExpired()このHTTP Cookieの有効期限が切れているかどうかを報告します。inthashCode()このHTTP Cookieのハッシュ・コードを返します。booleanisHttpOnly()このCookieがHttpOnly属性を含む場合はtrueを返します。static List<HttpCookie>parse(String header)set-cookieまたはset-cookie2ヘッダー文字列からCookieを構築します。voidsetComment(String purpose)Cookieの目的を説明するコメントを指定します。voidsetCommentURL(String purpose)Cookieの目的を説明するコメントURLを指定します。voidsetDiscard(boolean discard)ユーザー・エージェントがCookieを無条件に破棄すべきかどうかを指定します。voidsetDomain(String pattern)このCookieが提示されるドメインを指定します。voidsetHttpOnly(boolean httpOnly)CookieをHTTP Onlyとみなすべきかどうかを示します。voidsetMaxAge(long expiry)Cookieの最長有効期間を秒数で設定します。voidsetPath(String uri)クライアントがCookieを返す必要のあるCookieのパスを指定します。voidsetPortlist(String ports)Cookieのポート・リストを指定します。このリストは、CookieをCookieヘッダー内に収めて送り返す際に使用できるポート(複数可)を制約します。voidsetSecure(boolean flag)CookieをHTTPSやSSLなどのセキュアなプロトコルのみを使用して送信するべきかどうかを示します。voidsetValue(String newValue)Cookieの作成後に、Cookieに新しい値を割り当てます。voidsetVersion(int v)このCookieが準拠するCookieプロトコルのバージョンを設定します。StringtoString()このCookieのCookieヘッダー文字列表現を構築します。その形式は、対応するCookie仕様で定義されているものですが、先頭の「Cookie」トークンは付きません。
-
-
-
コンストラクタの詳細
-
HttpCookie
public HttpCookie(String name, String value)
指定された名前と値を持つCookieを構築します。名前はRFC 2965に準拠している必要があります。 つまり、ASCIIの英数文字のみを含み、カンマ、セミコロン、空白を含むことはできず、$文字が先頭にあってはいけません。 Cookieの作成後に名前を変更することはできません。
値には特に制限はありません。 その値は通常、サーバーにとってのみ意味があります。 Cookieの値は、作成後に
setValueメソッドを使用して変更できます。特に指定しないかぎり、CookieはRFC 2965のCookie仕様に従って作成されます。 バージョンを変更するには
setVersionメソッドを使用します。- パラメータ:
name−Cookieの名前を指定するStringvalue−Cookieの値を指定するString- 例外:
IllegalArgumentException- Cookie名に不正な文字が含まれている場合NullPointerException-nameがnullの場合- 関連項目:
setValue(java.lang.String),setVersion(int)
-
-
メソッドの詳細
-
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()
-
getComment
public String getComment()
このCookieの目的を説明するコメントを返します。Cookieにコメントがない場合は、nullを返します。- 戻り値:
- コメントが格納された
String。コメントがない場合はnull - 関連項目:
setComment(java.lang.String)
-
setCommentURL
public void setCommentURL(String purpose)
Cookieの目的を説明するコメントURLを指定します。 コメントURLは、ブラウザがCookieをユーザーに表示する場合に役立ちます。 コメントURLはRFC 2965専用です。- パラメータ:
purpose- ユーザーに表示するコメントURLを指定するString- 関連項目:
getCommentURL()
-
getCommentURL
public String getCommentURL()
このCookieの目的を説明するコメントURLを返します。このCookieにコメントURLがない場合はnullを返します。- 戻り値:
- コメントURLが格納された
String。コメントがない場合はnull - 関連項目:
setCommentURL(java.lang.String)
-
setDiscard
public void setDiscard(boolean discard)
ユーザー・エージェントがCookieを無条件に破棄すべきかどうかを指定します。 これは、RFC 2965専用の属性です。- パラメータ:
discard−trueは、Cookieを無条件に破棄することを示します- 関連項目:
getDiscard()
-
getDiscard
public boolean getDiscard()
Cookieの破棄属性を返します- 戻り値:
- このCookieの破棄属性を表す
boolean - 関連項目:
setDiscard(boolean)
-
setPortlist
public void setPortlist(String ports)
Cookieのポート・リストを指定します。このリストは、CookieをCookieヘッダー内に収めて送り返す際に使用できるポート(複数可)を制約します。- パラメータ:
ports- ポート・リストを指定するString。これは数字のカンマ区切りリストです- 関連項目:
getPortlist()
-
getPortlist
public String getPortlist()
Cookieのポート・リスト属性を返します- 戻り値:
- ポート・リストが格納された
String。存在しない場合はnull - 関連項目:
setPortlist(java.lang.String)
-
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()
-
getDomain
public String getDomain()
このCookieに設定されたドメイン名を返します。 ドメイン名の形式は、RFC 2965によって規定されています。- 戻り値:
- ドメイン名が格納された
String - 関連項目:
setDomain(java.lang.String)
-
setMaxAge
public void setMaxAge(long expiry)
Cookieの最長有効期間を秒数で設定します。正の値を指定すると、その秒数が経過したあとにCookieが期限切れになります。 この値は、Cookieの現在の有効期間ではなく、Cookieの期限が切れるまでの最長の有効期間であることに注意してください。
負の値を指定すると、Cookieは持続的に保持されずに、Webブラウザが終了したときに削除されます。 0の値を指定すると、Cookieが削除されます。
- パラメータ:
expiry−Cookieの最長有効期間を秒数で指定する整数。0の場合、Cookieはすぐに破棄され、それ以外の場合、Cookieの最長有効期間は未定義となります。- 関連項目:
getMaxAge()
-
getMaxAge
public long getMaxAge()
Cookieの最長有効期間を秒数で返します。 デフォルトは-1です。これは、ブラウザがシャットダウンされるまでCookieが持続することを示します。- 戻り値:
- Cookieの最長有効期間を秒数で指定する整数
- 関連項目:
setMaxAge(long)
-
setPath
public void setPath(String uri)
クライアントがCookieを返す必要のあるCookieのパスを指定します。指定されたディレクトリ内のすべてのページと、そのディレクトリのサブディレクトリ内のすべてのページに対して、Cookieが可視になります。 CookieのパスにはそのCookieを設定するサーブレットを含めてください。たとえば、/catalogを指定した場合、サーバー上の/catalogの下にあるすべてのディレクトリに対して、Cookieが可視になります。
Cookieのパス名の設定方法についての詳細は、RFC 2965で調べてください。RFC 2109は、インターネットで公開されています。
- パラメータ:
uri−パスを指定するString- 関連項目:
getPath()
-
getPath
public String getPath()
ブラウザがこのCookieを返す先となる、サーバー上のパスを返します。 サーバー上のすべてのサブパスに対して、Cookieが可視になります。- 戻り値:
- サーブレット名を含むパスを指定する
String。例: /catalog - 関連項目:
setPath(java.lang.String)
-
setSecure
public void setSecure(boolean flag)
CookieをHTTPSやSSLなどのセキュアなプロトコルのみを使用して送信するべきかどうかを示します。デフォルト値は
falseです。- パラメータ:
flag-trueの場合、Cookieを送信できるのはHTTPSのようなセキュアなプロトコル上でのみです。falseの場合、任意のプロトコル上で送信できます。- 関連項目:
getSecure()
-
getSecure
public boolean getSecure()
このCookieの送信をセキュアなプロトコルに制限すべき場合はtrue、どのようなプロトコルを使用して送信してもかまわない場合はfalseを返します。- 戻り値:
- Cookieを任意の標準プロトコル上で送信できる場合は
false。その他の場合はtrue - 関連項目:
setSecure(boolean)
-
getName
public String getName()
Cookieの名前を返します。 作成後に名前を変更することはできません。- 戻り値:
- Cookieの名前を指定する
String
-
setValue
public void setValue(String newValue)
Cookieの作成後に、Cookieに新しい値を割り当てます。 バイナリ値を使用する場合は、BASE64エンコーディングの使用をお薦めします。バージョン0のCookieの場合、空白、角カッコ、カッコ、等号、カンマ、二重引用符、スラッシュ、疑問符、単価記号、コロン、およびセミコロンを値に含めないようにしてください。 空の値を指定すると、ブラウザ間で異なる動作をする可能性があります。
- パラメータ:
newValue−新しい値を指定するString- 関連項目:
getValue()
-
getValue
public String getValue()
Cookieの値を返します。- 戻り値:
- Cookieの現在の値が格納された
String - 関連項目:
setValue(java.lang.String)
-
getVersion
public int getVersion()
このCookieが準拠するプロトコルのバージョンを返します。 バージョン1はRFC 2965/2109に準拠し、バージョン0はNetscapeによる元のCookieドラフト仕様に準拠します。 ブラウザから提供されるCookieは、そのブラウザのCookieバージョンを使用および識別します。- 戻り値:
- Cookieが元のNetscape仕様に準拠する場合は0、RFC 2965/2109に準拠する場合は1
- 関連項目:
setVersion(int)
-
setVersion
public void setVersion(int v)
このCookieが準拠するCookieプロトコルのバージョンを設定します。 バージョン0は元のNetscape Cookie仕様に準拠します。 バージョン1はRFC 2965/2109に準拠します。- パラメータ:
v−Cookieが元のNetscape仕様に準拠すべきである場合は0、RFC 2965/2109に準拠すべきである場合は1- 例外:
IllegalArgumentException−vが0、1のいずれでもない場合- 関連項目:
getVersion()
-
isHttpOnly
public boolean isHttpOnly()
このCookieがHttpOnly属性を含む場合はtrueを返します。 これは、JavaScriptのようなスクリプト・エンジンがCookieにアクセスできてはいけないことを意味します。- 戻り値:
- このCookieをHTTPOnlyとみなすべき場合は
true - 関連項目:
setHttpOnly(boolean)
-
setHttpOnly
public void setHttpOnly(boolean httpOnly)
CookieをHTTP Onlyとみなすべきかどうかを示します。trueに設定されている場合、JavaScriptのようなスクリプト・エンジンがCookieにアクセスできてはいけないことを意味します。- パラメータ:
httpOnly-trueの場合はCookieをHTTPのみとします。つまり、HTTP要求の一部としてのみ可視となります。- 関連項目:
isHttpOnly()
-
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」トークンは付きません。
-
equals
public boolean equals(Object obj)
2つのHTTP Cookieが等しいかどうかを判定します。結果が
trueになるのは、2つのCookieが同じドメイン(大文字、小文字の区別なし)から送られてきたものであり、同じ名前(大文字、小文字の区別なし)を持ち、同じパス(大文字、小文字の区別あり)を持つ場合だけです。- オーバーライド:
equals、クラス:Object- パラメータ:
obj- 比較対象の参照オブジェクト。- 戻り値:
- 2つのHTTP Cookieが互いに等しい場合は
true。そうでない場合はfalse - 関連項目:
Object.hashCode()、HashMap
-
hashCode
public int hashCode()
このHTTP Cookieのハッシュ・コードを返します。 結果は、このCookieの3つの主要コンポーネントである名前、ドメイン、パスのハッシュ・コード値を合計したものになります。 すなわち、ハッシュ・コードは次の式の値です。getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()- オーバーライド:
hashCode、クラス:Object- 戻り値:
- このHTTP Cookieのハッシュ・コード
- 関連項目:
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
-