クッキーを受けつけ、またそれを返す際の標準的なルールを実装します。
RFC 2965 クッキーと Netscape クッキーの両方に対応しています。 デフォルトでは、RFC 2965 の処理はオフになっています。
自分のポリシーを提供するいちばん簡単な方法は、このクラスを継承して、 自分用の追加チェックの前にオーバーライドした元のメソッドを呼び出すことです:
import cookielib
class MyCookiePolicy(cookielib.DefaultCookiePolicy):
def set_ok(self, cookie, request):
if not cookielib.DefaultCookiePolicy.set_ok(self, cookie, request):
return False
if i_dont_want_to_store_this_cookie(cookie):
return False
return True
CookiePolicy インターフェイスを実装するのに必要な機能に加えて、 このクラスではクッキーを受けとったり設定したりするドメインを 許可したり拒絶したりできるようになっています。ほかにも、 Netscape プロトコルのかなり緩い規則をややきつくするために、いくつかの 厳密性のスイッチがついています (いくつかの良性クッキーをブロックする危険性もありますが)。
ドメインのブラックリスト機能やホワイトリスト機能も提供されています (デフォルトではオフになっています)。 ブラックリストになく、(ホワイトリスト機能を使用している場合は) ホワイトリストにある ドメインのみがクッキーを設定したり返したりすることを許可されます。 コンストラクタの引数 blocked_domains、および blocked_domains() と set_blocked_domains() メソッドを 使ってください (allowed_domains に関しても同様の対応する引数とメソッドがあります)。 ホワイトリストを設定した場合は、それを None にすることで ホワイトリスト機能をオフにすることができます。
ブラックリストあるいはホワイトリスト中にあるドメインのうち、
ドット (.) で始まっていないものは、正確にそれと一致する
ドメインのクッキーにしか適用されません。たとえば
ブラックリスト中のエントリ "example.com" は、
"example.com" にはマッチしますが、"www.example.com" にはマッチしません。
一方ドット (.) で始まっているドメインは、より特化されたドメインともマッチします。
たとえば、".example.com" は、"www.example.com" と
"www.coyote.example.com" の両方にマッチします
(が、"example.com" 自身にはマッチしません)。IP アドレスは例外で、
つねに正確に一致する必要があります。たとえば、かりに
blocked_domains が "192.168.1.2" と ".168.1.2" を
含んでいたとして、192.168.1.2 はブロックされますが、
193.168.1.2 はブロックされません。
DefaultCookiePolicy は以下のような追加メソッドを実装しています:
| ) |
| blocked_domains) |
| domain) |
| ) |
| allowed_domains) |
| domain) |
DefaultCookiePolicy インスタンスは以下の属性をもっています。 これらはすべてコンストラクタから同じ名前の引数をつかって初期化することができ、 代入してもかまいません。
一般的な厳密性のスイッチ:
.co.uk, .gov.uk,
.co.nz など) を設定させないようにします。
これは完璧からはほど遠い実装であり、いつもうまくいくとは限りません!
RFC 2965 プロトコルの厳密性に関するスイッチ:
Netscape プロトコルの厳密性に関するスイッチ:
'$' で始まる名前のクッキーを無視します。
strict_ns_domain はいくつかのフラグの集合です。
これはいくつかの値を or することで構成します (たとえば
DomainStrictNoDots|DomainStrictNonDomain は両方のフラグが
設定されていることになります)。
www.foo.bar.com は .bar.com のクッキーを設定することはできません、
なぜなら www.foo はドットを含んでいるからです)。
domain クッキー属性を明示的に指定していないクッキーは、
そのクッキーを設定したドメインと同一のドメインだけに返されます
(例: example.com からのクッキーに domain クッキー属性が
ない場合、そのクッキーが spam.example.com に返されることはありません)。
以下の属性は上記のフラグのうちもっともよく使われる組み合わせで、 便宜をはかるために提供されています。
DomainStrictNoDots|DomainStrictNonDomain と同じです。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。