##
3 CookiePolicy オブジェクト

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

`set_ok`( | cookie, request)

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

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

`return_ok`( | cookie, request)

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

  cookie は `cookielib.Cookie` インスタンスです。 request は `CookieJar.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` 自体は どのようなクッキーも受け入れて設定を許可する「ポリシー無し」ポリシーとして 使うこともできます (これが役に立つことはあまりありませんが)。