|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.net.HttpCookie
public final class HttpCookie
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 つの形式の構文をすべて受け付けることができます。
コンストラクタの概要 | |
---|---|
HttpCookie(String name,
String value)
指定された名前と値を持つ Cookie を構築します。 |
メソッドの概要 | |
---|---|
Object |
clone()
このオブジェクトのコピーを作成して返します。 |
static boolean |
domainMatches(String domain,
String host)
あるホスト名があるドメインに含まれるかどうかをチェックするためのユーティリティーメソッド。 |
boolean |
equals(Object obj)
2 つの HTTP Cookie が等しいかどうかを判定します。 |
String |
getComment()
この Cookie の目的を説明するコメントを返します。 |
String |
getCommentURL()
この Cookie の目的を説明するコメント URL を返します。 |
boolean |
getDiscard()
Cookie の破棄属性を返します。 |
String |
getDomain()
この Cookie に設定されたドメイン名を返します。 |
long |
getMaxAge()
Cookie の最長有効期間を秒数で返します。 |
String |
getName()
Cookie の名前を返します。 |
String |
getPath()
ブラウザがこの Cookie を返す先となる、サーバー上のパスを返します。 |
String |
getPortlist()
Cookie のポートリスト属性を返します。 |
boolean |
getSecure()
ブラウザがセキュリティー保護されたプロトコル経由でのみ Cookie を送信している場合は true 、ブラウザがどのようなプロトコルを使用しても Cookie を送信できる場合は false を返します。 |
String |
getValue()
Cookie の値を返します。 |
int |
getVersion()
この Cookie が準拠するプロトコルのバージョンを返します。 |
boolean |
hasExpired()
この HTTP Cookie の有効期限が切れているかどうかを報告します。 |
int |
hashCode()
この HTTP Cookie のハッシュコードを返します。 |
static List<HttpCookie> |
parse(String header)
set-cookie または set-cookie2 ヘッダー文字列から Cookie を構築します。 |
void |
setComment(String purpose)
Cookie の目的を説明するコメントを指定します。 |
void |
setCommentURL(String purpose)
Cookie の目的を説明するコメント URL を指定します。 |
void |
setDiscard(boolean discard)
ユーザーエージェントが Cookie を無条件に破棄すべきかどうかを指定します。 |
void |
setDomain(String pattern)
この Cookie が提示されるドメインを指定します。 |
void |
setMaxAge(long expiry)
Cookie の最長有効期間を秒数で設定します。 |
void |
setPath(String uri)
クライアントが Cookie を返す必要のある Cookie のパスを指定します。 |
void |
setPortlist(String ports)
Cookie のポートリストを指定します。 |
void |
setSecure(boolean flag)
HTTPS や SSL のような、セキュリティー保護されたプロトコルを使用している場合にのみ、Cookie を送信するかどうかを、ブラウザに指示します。 |
void |
setValue(String newValue)
Cookie の作成後に、Cookie に新しい値を割り当てます。 |
void |
setVersion(int v)
この Cookie が準拠する Cookie プロトコルのバージョンを設定します。 |
String |
toString()
この Cookie の Cookie ヘッダー文字列表現を構築します。 |
クラス java.lang.Object から継承されたメソッド |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
コンストラクタの詳細 |
---|
public HttpCookie(String name, String value)
名前は RFC 2965 に準拠している必要があります。つまり、ASCII の英数文字のみを含み、コンマ、セミコロン、空白を含むことはできず、$ 文字が先頭にあってはいけません。Cookie の作成後に名前を変更することはできません。
値には特に制限はありません。その値は通常、サーバーにとってのみ意味があります。Cookie の値は、作成後に setValue
メソッドを使用して変更できます。
特に指定しないかぎり、Cookie は RFC 2965 の Cookie 仕様に従って作成されます。バージョンを変更するには setVersion
メソッドを使用します。
name
- Cookie の名前を指定する String
value
- Cookie の値を指定する String
IllegalArgumentException
- Cookie 名に不当な文字が含まれているか、Cookie 名が Cookie プロトコル用として予約されているトークンの 1 つである場合
NullPointerException
- name が null の場合setValue(java.lang.String)
,
setVersion(int)
メソッドの詳細 |
---|
public static List<HttpCookie> parse(String header)
header
- set-cookie ヘッダーを指定する String。ヘッダーは、「set-cookie」または「set-cookie2」トークンで始まっているか、開始トークンをまったく持たないか、のいずれかにすべきである
IllegalArgumentException
- ヘッダー文字列が Cookie 仕様の構文に違反しているか、Cookie 名に不当な文字が含まれているか、Cookie 名が Cookie プロトコル用として予約されているトークンの 1 つである場合
NullPointerException
- ヘッダー文字列が null の場合public boolean hasExpired()
public void setComment(String purpose)
purpose
- ユーザーに表示するコメントを指定する String
getComment()
public String getComment()
null
を返します。
String
。コメントがない場合は null
setComment(java.lang.String)
public void setCommentURL(String purpose)
purpose
- ユーザーに表示するコメント URL を指定する String
getCommentURL()
public String getCommentURL()
null
を返します。
String
。コメントがない場合は null
setCommentURL(java.lang.String)
public void setDiscard(boolean discard)
discard
- true は、Cookie を無条件に破棄することを示すgetDiscard()
public boolean getDiscard()
setDiscard(boolean)
public void setPortlist(String ports)
ports
- ポートリストを指定する String。これは数字のコンマ区切りリストであるgetPortlist()
public String getPortlist()
setPortlist(java.lang.String)
public void setDomain(String pattern)
ドメイン名の形式は、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()
String
setDomain(java.lang.String)
public void setMaxAge(long expiry)
正の値を指定すると、その秒数が経過したあとに Cookie が期限切れになります。この値は、Cookie の現在の有効期間ではなく、Cookie の期限が切れるまでの「最長」の有効期間であることに注意してください。
負の値を指定すると、Cookie は持続的に保持されずに、Web ブラウザが終了したときに削除されます。0 の値を指定すると、Cookie が削除されます。
expiry
- Cookie の最長有効期間を秒数で指定する整数。0 の場合、Cookie はすぐに破棄されるべきである。それ以外の場合、Cookie の最長有効期間は未定義となるgetMaxAge()
public long getMaxAge()
-1
です。これは、ブラウザがシャットダウンされるまで Cookie が持続することを示します。
setMaxAge(long)
public void setPath(String uri)
指定されたディレクトリ内のすべてのページと、そのディレクトリのサブディレクトリ内のすべてのページに対して、Cookie が可視になります。Cookie のパスにはその Cookie を設定するサーブレットを含めてください。たとえば、/catalog を指定した場合、サーバー上の /catalog の下にあるすべてのディレクトリに対して、Cookie が可視になります。
Cookie のパス名の設定方法についての詳細は、RFC 2965 で調べてください。RFC 2109 は、インターネットで公開されています。
uri
- パスを指定する String
getPath()
public String getPath()
String
。例: /catalogsetPath(java.lang.String)
public void setSecure(boolean flag)
デフォルト値は false
です。
flag
- true
の場合、セキュリティー保護されたプロトコルを使用している場合にのみ、ブラウザからサーバーに Cookie が送信される。false
の場合、任意のプロトコル上で送信されるgetSecure()
public boolean getSecure()
true
、ブラウザがどのようなプロトコルを使用しても Cookie を送信できる場合は false
を返します。
true
、それ以外の場合は false
setSecure(boolean)
public String getName()
String
public void setValue(String newValue)
バージョン 0 の Cookie の場合、空白、角括弧、括弧、等号、コンマ、二重引用符、スラッシュ、疑問符、単価記号、コロン、およびセミコロンを値に含めないようにしてください。空の値を指定すると、ブラウザ間で異なる動作をする可能性があります。
newValue
- 新しい値を指定する String
getValue()
public String getValue()
String
setValue(java.lang.String)
public int getVersion()
setVersion(int)
public void setVersion(int v)
v
- Cookie が元の Netscape 仕様に準拠すべきである場合は 0、RFC 2965/2109 に準拠すべきである場合は 1
IllegalArgumentException
- v が 0、1 のいずれでもない場合getVersion()
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 は常に拒否される。なぜなら、埋め込みドットが存在しないからである。
- Domain=ajax.com を含む Set-Cookie2 は受け入れられ、Domain の値は .ajax.com であるとみなされる。なぜなら、値の先頭にはドットが追加されるからである。
- 要求ホスト example からの Domain=.local の Set-Cookie2 は受け入れられる。なぜなら、要求ホストの有効ホスト名は example.local であり、example.local は .local にドメイン一致するからである。
domain
- ホスト名のチェックに使用するドメイン名host
- 問題のホスト名
public String toString()
Object
内の toString
public boolean equals(Object obj)
結果が true になるのは、2 つの Cookie が同じドメイン (大文字、小文字の区別なし) から送られてきたものであり、同じ名前 (大文字、小文字の区別なし) を持ち、同じパス (大文字、小文字の区別あり) を持つ場合だけです。
Object
内の equals
obj
- 比較対象の参照オブジェクト
Object.hashCode()
,
Hashtable
public int hashCode()
getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()
Object
内の hashCode
Object.equals(java.lang.Object)
,
Hashtable
public Object clone()
Object
内の clone
Cloneable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。