public class CookieManager extends CookieHandler
CookieHandler の具象実装を提供し、Cookie のストレージと Cookie の受け入れ/拒否に関するポリシーとを分離します。CookieManager は、ストレージを管理する CookieStore と、Cookie の受け入れ/拒否に関するポリシー決定を行う CookiePolicy オブジェクトとを使って初期化されます。
java.net パッケージにおける HTTP Cookie 管理は、次のようになっています。
use CookieHandler <------- HttpURLConnection ^ | impl | use CookieManager -------> CookiePolicy | use |--------> HttpCookie | ^ | | use | use | |--------> CookieStore ^ | impl | Internal in-memory implementation
- CookieHandler が Cookie 管理の中核となる。ユーザーは CookieHandler.setDefault を呼び出すことで、使用すべき CookieHanlder の具象実装を設定できる。
- CookiePolicy.shouldAccept が CookieManager.put によって呼び出され、ある Cookie を受け入れて Cookie ストア内に格納すべきかどうかが確認される。ユーザーは、3 つの定義済み CookiePolicy、つまり ACCEPT_ALL、ACCEPT_NONE、ACCEPT_ORIGINAL_SERVER、のいずれかを使用することもできるし、ユーザー独自の CookiePolicy 実装を定義し、CookieManager にそれを使用するよう指示することもできる。
- CookieStore は、受け入れられたすべての HTTP Cookie の格納場所となる。作成時に指定されなかった場合、CookieManager インスタンスは内部のインメモリー実装を使用する。また、ユーザーが別のものを実装し、CookieManager にそれを使用するよう指示することもできる。
- 現時点では、CookieManager によって使用されているのは、CookieStore.add(URI, HttpCookie) と CookieStore.get(URI) だけである。それ以外は完全を期すためのものであるが、NetscapeCookieStore など、より高度な CookieStore 実装では必要になる可能性がある。
ユーザーが独自の HTTP Cookie 管理動作を組み込む方法としては、さまざまなものが考えられます。次に例を示します。
- CookieHandler.setDefault を使って新しい
CookieHandler実装を設定する。- CookieManager をデフォルトの
CookieHandler実装にするが、ユーザー独自のCookieStoreとCookiePolicyを実装し、デフォルトの CookieManager にそれらを使用するよう指示する。// this should be done at the beginning of an HTTP session CookieHandler.setDefault(new CookieManager(new MyCookieStore(), new MyCookiePolicy()));- CookieManager をデフォルトの
CookieHandler実装にするが、カスタマイズされたCookiePolicyを使用する。// this should be done at the beginning of an HTTP session CookieHandler.setDefault(new CookieManager()); // this can be done at any point of an HTTP session ((CookieManager)CookieHandler.getDefault()).setCookiePolicy(new MyCookiePolicy());
この実装は、RFC 2965 のセクション 3.3 に準拠しています。
CookiePolicy| コンストラクタと説明 | 
|---|
| CookieManager()新しい Cookie マネージャーを作成します。 | 
| CookieManager(CookieStore store,              CookiePolicy cookiePolicy)指定された Cookie ストアと Cookie ポリシーを使って新しい Cookie マネージャーを作成します。 | 
| 修飾子と型 | メソッドと説明 | 
|---|---|
| Map<String,List<String>> | get(URI uri,    Map<String,List<String>> requestHeaders)要求ヘッダー内に指定された URI の Cookie キャッシュから適用可能なすべての Cookie を取得します。 | 
| CookieStore | getCookieStore()現在の Cookie ストアを取得するためのもの。 | 
| void | put(URI uri,    Map<String,List<String>> responseHeaders)応答ヘッダー内に存在する Set-Cookie2 という名前の応答ヘッダーフィールドなど、適用可能なすべての Cookie を Cookie キャッシュ内に設定します。 | 
| void | setCookiePolicy(CookiePolicy cookiePolicy)この Cookie マネージャーの Cookie ポリシーを設定するためのもの。 | 
getDefault, setDefaultpublic CookieManager()
このコンストラクタは、デフォルトの Cookie ストアと受け入れポリシーを使って新しい Cookie マネージャーを作成します。その効果は CookieManager(null, null) と同じです。
public CookieManager(CookieStore store, CookiePolicy cookiePolicy)
store - Cookie マネージャーが使用すべき CookieStore。null の場合、Cookie マネージャーはデフォルトのインメモリー CookieStore 実装を使用します。cookiePolicy - Cookie マネージャーがポリシーコールバックとして使用すべき CookiePolicy インスタンス。null の場合、ACCEPT_ORIGINAL_SERVER が使用されます。public void setCookiePolicy(CookiePolicy cookiePolicy)
CookieManager のインスタンスはデフォルトで、Cookie ポリシー ACCEPT_ORIGINAL_SERVER を持ちます。ユーザーはいつでもこのメソッドを呼び出して別の Cookie ポリシーを設定できます。
cookiePolicy - Cookie ポリシー。null も可能ですが、現在の Cookie ポリシーに対する効果はありません。public CookieStore getCookieStore()
public Map<String,List<String>> get(URI uri, Map<String,List<String>> requestHeaders) throws IOException
CookieHandler引数として渡される URI は、Cookie の使用目的を指定します。たとえば、スキームには Cookie が http または https のどちらで送信されるのかや、Javascript などの別のコンテキストで使用されるのかを反映するべきです。ホスト部分には Cookie の転送先または Javascript の場合はそれらのオリジンを反映するべきです。
どれを返すかを決定する際に、URI および Cookie の属性とセキュリティ設定を考慮することは、実装に任されています。
HTTP プロトコルの実装者は、Cookie の選択に関係するすべての要求ヘッダーが追加されてから要求が送信されるまでの間に、必ずこのメソッドが呼び出されるようにしてください。
get、クラス: CookieHandleruri - Cookie の使用目的を表す URIrequestHeaders - 現在の要求ヘッダーを表す、要求ヘッダーフィールド名からフィールド値のリストへのマップIOException - 入出力エラーが発生した場合CookieHandler.put(URI, Map)public void put(URI uri, Map<String,List<String>> responseHeaders) throws IOException
CookieHandlerput、クラス: CookieHandleruri - Cookie の生成元の URIresponseHeaders - 返された応答ヘッダーフィールドを表す、フィールド名からフィールド値のリストへの不変のマップIOException - 入出力エラーが発生した場合CookieHandler.get(URI, Map) バグまたは機能を送信 
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.