import http.cookiejar
http.cookiejar.CookiePolicy()
Класс CookiePolicy()
модуля http.cookiejar
отвечает за принятие решения о том, следует ли принимать каждый файл cookie или возвращать его на сервер.
CookiePolicy
.Самый полезный способ определить класс http.cookiejar.CookiePolicy
- создать подкласс от http.cookiejar.DefaultCookiePolicy
и переопределить некоторые или все нижеперечисленные методы. Сам CookiePolicy
может использоваться в качестве нулевой политики, чтобы разрешить установку и получение любых файлов cookie, что вряд ли будет полезно.
У объектов, реализующих интерфейс CookiePolicy
, есть следующие методы:
CookiePolicy.set_ok()
следует ли принимать cookie с сервера,CookiePolicy.return_ok()
следует ли возвращать cookie на сервера,CookiePolicy.domain_return_ok()
следует ли возвращать cookie на сервера с определенным domain
,CookiePolicy.path_return_ok()
следует ли возвращать cookie на сервера с определенным path
,CookiePolicy.netscape
реализует протокол Netscape,CookiePolicy.rfc2965
реализует протокол RFC 2965,CookiePolicy.hide_cookie2
отвечает за добавление заголовков Cookie2
.CookiePolicy.set_ok(cookie, request)
:Метод CookiePolicy.set_ok()
возвращает bool
значение с указанием того, следует ли принимать файлы cookie с сервера.
Аргумент cookie
является экземпляром класса http.cookiejar.Cookie
.
Аргумент request
является объектом реализации интерфейса, определяемого документацией для CookieJar.extract_cookies()
.
CookiePolicy.return_ok(cookie, request)
:Метод CookiePolicy.return_ok()
возвращает bool
значение, указывающее, следует ли возвращать cookie на сервер.
Аргумент cookie
является экземпляром класса http.cookiejar.Cookie
.
Аргумент request
является объектом реализации интерфейса, определяемого документацией для CookieJar.add_cookie_header()
.
CookiePolicy.domain_return_ok(domain, request)
:Метод CookiePolicy.domain_return_ok()
возвращает False
, если файлы cookie не должны возвращаться, учитывая домен cookie domain
.
Это метод оптимизации и устраняет необходимость проверять каждый файл cookie с определенным доменом (что может включать чтение большого количества файлов).
Если методы CookiePolicy.domain_return_ok()
и CookiePolicy.path_return_ok()
возвращают True
, то вся работа остается на CookiePolicy.return_ok()
.
Если метод CookiePolicy.domain_return_ok()
возвращает True
для значения domain
cookie, то для значения пути path
cookie вызывается CookiePolicy.path_return_ok()
. В противном случае для аргумента domain
cookie никогда не вызываются методы CookiePolicy.path_return_ok()
и CookiePolicy.return_ok()
.
Если CookiePolicy.path_return_ok()
возвращает True
, то метод CookiePolicy.return_ok()
вызывается с самим объектом Cookie
для полной проверки. В противном случае метод CookiePolicy.return_ok()
никогда не вызывается для этого значения path
в cookie.
Обратите внимание, что метод CookiePolicy.domain_return_ok()
вызывается для каждого значения domain
cookie, а не только для домена запроса. Например, метод может быть вызван как с аргументов domain
, равным .example.com
, так и с www.example.com
, если домен запроса - www.example.com
.
Так же работает метод CookiePolicy.path_return_ok()
.
Аргумент request
должен быть такой же как для метода CookiePolicy.return_ok()
.
CookiePolicy.path_return_ok(path, request)
:Метод CookiePolicy.path_return_ok()
возвращает False
, если файлы cookie не должны возвращаться при заданном path
для файлов cookie.
Поведение и аргументы этого метода рассмотрены в документации к методу CookiePolicy.domain_return_ok()
.
В дополнение к реализации вышеупомянутых методов реализации интерфейса CookiePolicy
также должны предоставлять следующие атрибуты, указывающие, какие и как протоколы следует использовать. Все эти атрибуты изменяемы и могут быть переназначены.
CookiePolicy.netscape
:Атрибут CookiePolicy.netscape
реализует протокол Netscape.
CookiePolicy.rfc2965
:Атрибут CookiePolicy.rfc2965
реализует протокол RFC 2965.
CookiePolicy.hide_cookie2
:Не добавляйте в запросы заголовок Cookie2 (наличие этого заголовка указывает серверу, что клиент понимает файлы cookie RFC 2965).