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

クラスCookieManager



  • public class CookieManager
    extends CookieHandler
    CookieManagerは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)だけである。 他のものは完全性のためであり、より洗練されたCookieStore実装、例えばNetscapeCookieStoreによって必要とされるかもしれません。

    ユーザーが独自のHTTP Cookie管理動作を組み込む方法としては、さまざまなものが考えられます。次に例を示します。

    • CookieHandler.setDefaultを使って新しいCookieHandler実装を設定する。
    • CookieManagerをデフォルトのCookieHandler実装にするが、ユーザー独自のCookieStoreCookiePolicyを実装し、デフォルトの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に準拠しています。

    導入されたバージョン:
    1.6
    関連項目:
    CookiePolicy
    • コンストラクタの詳細

      • CookieManager

        public CookieManager​()
        新しいCookieマネージャを作成します。

        このコンストラクタは、デフォルトのCookieストアと受け入れポリシーを使って新しいCookieマネージャを作成します。 その効果はCookieManager(null, null)と同じです。

      • CookieManager

        public CookieManager​(CookieStore store,
                             CookiePolicy cookiePolicy)
        指定されたCookieストアとCookieポリシーを使って新しいCookieマネージャを作成します。
        パラメータ:
        store - Cookieマネージャが使用すべきCookieStorenullの場合、CookieマネージャはデフォルトのインメモリーCookieStore実装を使用します。
        cookiePolicy - Cookieマネージャがポリシー・コールバックとして使用すべきCookiePolicyインスタンス。nullの場合、ACCEPT_ORIGINAL_SERVERが使用されます。
    • メソッドの詳細

      • setCookiePolicy

        public void setCookiePolicy​(CookiePolicy cookiePolicy)
        このCookieマネージャのCookieポリシーを設定するためのもの。

        CookieManagerのインスタンスはデフォルトで、CookieポリシーACCEPT_ORIGINAL_SERVERを持ちます。 ユーザーはいつでもこのメソッドを呼び出して別のCookieポリシーを設定できます。

        パラメータ:
        cookiePolicy - Cookieポリシー。 nullも可能ですが、現在のCookieポリシーに対する効果はありません。
      • getCookieStore

        public CookieStore getCookieStore​()
        現在のCookieストアを取得するためのもの。
        戻り値:
        Cookieマネージャが現在使用しているCookieストア。
      • get

        public Map<String,List<String>> get​(URI uri,
                                            Map<String,List<String>> requestHeaders)
                                     throws IOException
        次のクラスからコピーされた説明: CookieHandler
        要求ヘッダー内に指定されたURIのCookieキャッシュから適用可能なすべてのCookieを取得します。

        引数として渡されるURIは、Cookieの使用目的を指定します。 たとえば、スキームにはCookieがhttpまたはhttpsのどちらで送信されるのかや、Javascriptなどの別のコンテキストで使用されるのかを反映するべきです。 ホスト部分にはCookieの転送先またはJavascriptの場合はそれらのオリジンを反映するべきです。

        どれを返すかを決定する際に、URIおよびCookieの属性とセキュリティ設定を考慮することは、実装に任されています。

        HTTPプロトコルの実装者は、Cookieの選択に関係するすべての要求ヘッダーが追加されてから要求が送信されるまでの間に、必ずこのメソッドが呼び出されるようにしてください。

        定義:
        get、クラス: CookieHandler
        パラメータ:
        uri - Cookieの使用目的を表すURI
        requestHeaders - 現在の要求ヘッダーを表す、要求ヘッダー・フィールド名からフィールド値のリストへのマップ
        戻り値:
        フィールド名「Cookie」または「Cookie2」を持つ状態管理ヘッダーから状態情報が格納されたCookieのリストへの不変のマップ
        例外:
        IOException - 入出力エラーが発生した場合
        関連項目:
        CookieHandler.put(URI, Map)
      • put

        public void put​(URI uri,
                        Map<String,List<String>> responseHeaders)
                 throws IOException
        次のクラスからコピーされた説明: CookieHandler
        応答ヘッダー内に存在するSet-Cookie2という名前の応答ヘッダー・フィールドなど、適用可能なすべてのCookieをCookieキャッシュ内に設定します。
        定義:
        put、クラス: CookieHandler
        パラメータ:
        uri - Cookieの生成元のURI
        responseHeaders - 返された応答ヘッダー・フィールドを表す、フィールド名からフィールド値のリストへの不変のマップ
        例外:
        IOException - 入出力エラーが発生した場合
        関連項目:
        CookieHandler.get(URI, Map)