public class Cookie extends ObjectSE implements CloneableSE, SerializableSE
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 で定義されたキャッシュ制御をサポートしていません。
このクラスは、バージョン 0(Netscape による)とバージョン 1(RFC 2109 による)の両方の Cookie 仕様をサポートします。デフォルトでは、Cookie はバージョン 0 を使用して作成され、最高の相互運用性が確保されます。
修飾子と型 | メソッドと説明 |
---|---|
ObjectSE | clone() この Cookie のコピーを返す標準の java.lang.Object.clone メソッドをオーバーライドします。 |
StringSE | getComment() この Cookie の目的を説明するコメントを返します。Cookie にコメントがない場合は null を返します。 |
StringSE | getDomain() この Cookie のドメイン名を取得します。 |
int | getMaxAge() この Cookie の最大経過時間を秒単位で取得します。 |
StringSE | getName() Cookie の名前を返します。 |
StringSE | getPath() ブラウザーがこの Cookie を返すサーバー上のパスを返します。 |
boolean | getSecure() ブラウザーが安全なプロトコルでのみ Cookie を送信している場合は true を返し、ブラウザーが任意のプロトコルを使用して Cookie を送信できる場合は false を返します。 |
StringSE | getValue() この Cookie の現在の値を取得します。 |
int | getVersion() この Cookie が準拠しているプロトコルのバージョンを返します。 |
boolean | isHttpOnly() この Cookie が HttpOnly としてマークされているかどうかを確認します。 |
void | setComment(StringSE purpose) Cookie の目的を説明するコメントを指定します。 |
void | setDomain(StringSE domain) この Cookie が提示されるドメインを指定します。 |
void | setHttpOnly(boolean isHttpOnly) この Cookie を HttpOnly としてマークまたはマーク解除します。 |
void | setMaxAge(int expiry) この Cookie の最大有効期間を秒単位で設定します。 |
void | setPath(StringSE uri) クライアントが Cookie を返す先の Cookie のパスを指定します。 |
void | setSecure(boolean flag) Cookie を HTTPS や SSL などの安全なプロトコルのみを使用して送信するかどうかをブラウザーに示します。 |
void | setValue(StringSE newValue) この Cookie に新しい値を割り当てます。 |
void | setVersion(int v) この Cookie が準拠する Cookie プロトコルのバージョンを設定します。 |
equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public Cookie(StringSE name, StringSE value)
名前は RFC 2109 に準拠する必要があります。ただし、ベンダーは、元の Netscape Cookie 仕様に準拠する Cookie 名を受け入れることができる構成オプションを提供する場合があります。
Cookie が作成されると、Cookie の名前は変更できません。
値は、サーバーが送信することを選択したものであれば何でもかまいません。その値はおそらくサーバーにとってのみ重要です。Cookie の値は、setValue
メソッドを使用して作成後に変更できます。
デフォルトでは、Cookie は Netscape Cookie 仕様に従って作成されます。バージョンは setVersion
メソッドで変更できます。
name
- クッキーの名前 value
- クッキーの値 IllegalArgumentExceptionSE
- Cookie 名が null または空であるか、不正な文字(コンマ、スペース、セミコロンなど)を含んでいる場合、Cookie プロトコルで使用するために予約されているトークンと一致する場合 setValue(java.lang.String)
, setVersion(int)
public void setComment(StringSE purpose)
purpose
- ユーザーに表示するコメントを指定する String
getComment()
public StringSE getComment()
null
を返します。null
setComment(java.lang.String)
public void setDomain(StringSE domain)
ドメイン名の形式は RFC 2109 で指定されています。ドメイン名はドット(.foo.com
)で始まり、指定されたドメインネームシステム(DNS)ゾーン内のサーバーから Cookie が見えることを意味します(a.b.foo.com
ではなく www.foo.com
など)。デフォルトでは、Cookie は送信したサーバーにのみ返されます。
domain
- この Cookie が表示されるドメイン名。フォームは RFC 2109 に準拠 getDomain()
public StringSE getDomain()
ドメイン名は RFC 2109 に従ってフォーマットされています。
setDomain(java.lang.String)
public void setMaxAge(int expiry)
正の値は、その秒数が経過すると Cookie が期限切れになることを示します。値は、Cookie の現在の年齢ではなく、Cookie が期限切れになる最大年齢であることに注意してください。
負の値は、Cookie が永続的に保存されず、Web ブラウザーが終了したときに削除されることを意味します。値がゼロの場合、Cookie は削除されます。
expiry
- Cookie の最大有効期間を秒単位で指定する整数。負の場合、Cookie は保存されません。ゼロの場合、Cookie を削除します getMaxAge()
public int getMaxAge()
デフォルトでは、-1
が返されます。これは、ブラウザーがシャットダウンするまで Cookie が保持されることを示します。
setMaxAge(int)
public void setPath(StringSE uri)
Cookie は、指定したディレクトリ内のすべてのページと、そのディレクトリのサブディレクトリ内のすべてのページに表示されます。Cookie のパスには、Cookie を設定するサーブレット(/catalog下にあるサーバー上のすべてのディレクトリに Cookie が表示されます。
Cookie のパス名の設定の詳細については、RFC 2109(インターネットで入手可能)を参照してください。
uri
- パスを指定する String
getPath()
public StringSE getPath()
String
(例: /catalogsetPath(java.lang.String)
public void setSecure(boolean flag)
デフォルト値は false
です。
flag
- true
の場合、安全なプロトコルを使用している場合にのみ、ブラウザーからサーバーにクッキーを送信します。false
の場合、任意のプロトコルで送信されます getSecure()
public boolean getSecure()
true
を返し、ブラウザーが任意のプロトコルを使用して Cookie を送信できる場合は false
を返します。true
、それ以外の場合は false
setSecure(boolean)
public StringSE getName()
public void setValue(StringSE newValue)
バイナリ値を使用する場合は、BASE64 エンコードを使用できます。
バージョン 0 クッキーでは、値に空白、括弧、括弧、等号、コンマ、二重引用符、スラッシュ、疑問符、アットマーク、コロン、セミコロンを含めることはできません。空の値は、すべてのブラウザーで同じように動作しない場合があります。
newValue
- クッキーの新しい値 getValue()
public StringSE getValue()
setValue(java.lang.String)
public int getVersion()
setVersion(int)
public void setVersion(int v)
バージョン 0 は、元の Netscape Cookie 仕様に準拠しています。バージョン 1 は RFC 2109 に準拠しています。
RFC 2109 はまだやや新しいため、バージョン 1 は実験的であると考えてください。本番サイトではまだ使用しないでください。
v
- Cookie が元の Netscape 仕様に準拠する必要がある場合は 0。Cookie が RFC 2109 に準拠する必要がある場合は 1getVersion()
public ObjectSE clone()
java.lang.Object.clone
メソッドをオーバーライドします。public void setHttpOnly(boolean isHttpOnly)
isHttpOnly が true に設定されている場合、この Cookie は HttpOnly 属性を追加して HttpOnly としてマークされます。
HttpOnly Cookie は、クライアント側のスクリプトコードにさらされることは想定されていないため、特定の種類のクロスサイトスクリプト攻撃を軽減するのに役立つ可能性があります。
isHttpOnly
- この Cookie が HttpOnly としてマークされる場合は true、そうでない場合は falsepublic boolean isHttpOnly()
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.