11.20.3 CookiePolicy オブジェクト

CookiePolicy インターフェイスを実装するオブジェクトは 以下のようなメソッドを持っています:

set_ok( cookie, request)
クッキーがサーバから受け入れられるべきかどうかを表わす boolean 値を返します。

cookiecookielib.Cookie インスタンスです。 requestCookieJar.extract_cookies() の説明で定義されているインターフェイスを 実装するオブジェクトです。

return_ok( cookie, request)
クッキーがサーバに返されるべきかどうかを表わす boolean 値を返します。

cookiecookielib.Cookie インスタンスです。 requestCookieJar.add_cookie_header() の説明で定義されているインターフェイスを 実装するオブジェクトです。

domain_return_ok( domain, request)
与えられたクッキーのドメインに対して、そこにクッキーを返すべきでない場合には false を返します。

このメソッドは高速化のためのものです。これにより、すべてのクッキーをある特定の ドメインに対してチェックする (これには多数のファイル読みこみを伴なう場合があります) 必要がなくなります。 domain_return_ok() および path_return_ok() の 両方から true が返された場合、すべての決定は return_ok() に委ねられます。

もし、このクッキードメインに対して domain_return_ok() が true を返すと、 つぎにそのクッキーのパス名に対して path_return_ok() が呼ばれます。 そうでない場合、そのクッキードメインに対する path_return_ok() および return_ok() は決して呼ばれることはありません。path_return_ok() が true を返すと、 return_ok() がその Cookie オブジェクト自身の全チェックのために 呼ばれます。そうでない場合、そのクッキーパス名に対する return_ok() は 決して呼ばれることはありません。

注意: domain_return_ok()request ドメインだけではなく、 すべての cookie ドメインに対して呼ばれます。たとえば request ドメインが "www.example.com" だった場合、この関数は ".example.com" および "www.example.com" の両方に対して呼ばれることがあります。 同じことは path_return_ok() にもいえます。

request 引数は return_ok() で説明されているとおりです。

path_return_ok( path, request)
与えられたクッキーのパス名に対して、そこにクッキーを返すべきでない場合には false を返します。

domain_return_ok() の説明を参照してください。

上のメソッドの実装にくわえて、CookiePolicy インターフェイスの実装では 以下の属性を設定する必要があります。これはどのプロトコルがどのように使われるべきかを 示すもので、これらの属性にはすべて代入することが許されています。

netscape
Netscape プロトコルを実装していることを示します。
rfc2965
RFC 2965 プロトコルを実装していることを示します。
hide_cookie2
Cookie2: ヘッダをリクエストに含めないようにします (このヘッダが存在する場合、私たちは RFC 2965 クッキーを理解すると いうことをサーバに示すことになります)。

もっとも有用な方法は、DefaultCookiePolicy をサブクラス化した CookiePolicy クラスを定義して、いくつか (あるいはすべて) の メソッドをオーバーライドすることでしょう。CookiePolicy 自体は どのようなクッキーも受け入れて設定を許可する「ポリシー無し」ポリシーとして 使うこともできます (これが役に立つことはあまりありませんが)。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。