http.cookies — Управление состоянием HTTP

Исходный код: Lib/http/cookies.py


Модуль http.cookies определяет классы для реферирования понятия cookie, механизма управления HTTP состояние. Это поддерживает и простой строка-только cookies и обеспечивает абстракцию для того, чтобы иметь любой сериализуемый тип данных как cookie значение.

Ранее модуль строго применял правила парсинг, описанные в спецификациях RFC 2109 и RFC 2068. С тех пор было обнаружено, что MSIE 3.0x не соблюдает правила символ, изложенные в этих specs, а также многие браузеры и серверы текущего дня смягчили правила парсинг, когда дело доходит до обработки cookie. В результате парсинг постановляет, что используемый немного менее строги.

Наборы символ, string.ascii_letters, string.digits и !#$%&'*+-.^_`|~: обозначают набор допустимых символов, разрешенных этим модулем в имени cookie (как key).

Изменено в версии 3.3: Допускается «»: «» в качестве допустимого имени cookie символ.

Примечание

При столкновении с недействительным cookies CookieError поднят, поэтому если ваши данные о cookie прибывают из браузера, вы должны всегда готовиться к недействительным данным и ловить CookieError на парсинг.

exception http.cookies.CookieError

Ошибка исключения из-за недействительности RFC 2109: неправильная атрибуты, неправильный заголовок Set-Cookie и т.д.

class http.cookies.BaseCookie([input])

Этот класс - подобный словарю объект, ключи которого - строки и чьи значения - Morsel сущности. Обратите внимание, что после устанавливания ключа к значение, значение сначала преобразован в Morsel, содержащий ключ и значение.

Если задано значение input, оно передается методу load().

class http.cookies.SimpleCookie([input])

Этот класс является производным от BaseCookie и переопределяет value_decode() и value_encode(). SimpleCookie поддерживает строки как cookie значения. Устанавливая значение, SimpleCookie называет встроенный str(), чтобы преобразовать значение в строка. Значения, полученные от HTTP, сохраняются как строки.

См.также

Модуль http.cookiejar обработка файлов cookie HTTP для веб- clients. Модули http.cookiejar и http.cookies не зависят друг от друга.

RFC 2109 - механизм управления состоянием HTTP это спецификация управления состояние, реализованная этим модулем.

Объекты Морселя

class http.cookies.Morsel

Абстрагируем пару ключ/значение, которая имеет некоторые RFC 2109 атрибуты.

Морсели - словареподобные объекты, набор ключей которых является постоянным — действительных RFC 2109 атрибуты, которые являются

  • expires
  • path
  • comment
  • domain
  • max-age
  • secure
  • version
  • httponly
  • samesite

атрибут httponly определяет, что cookie только передано в запросах HTTP и не доступно через JavaScript. Это предназначено для смягчения некоторых форм межсайтовых сценариев.

Параметр атрибут samesite указывает, что обозревателю запрещено отправлять файлы cookie вместе с межузловыми запросами. Это помогает смягчить атаки CSRF. Действительные значения для этого атрибут «Строги» и «Слабы».

Ключи без учета регистра и их дефолт, значение - ''.

Изменено в версии 3.5: __eq__() теперь учитывает key и value.

Изменено в версии 3.7: Атрибуты key, value и coded_value доступны только для чтения. Используйте set() для их настройки.

Изменено в версии 3.8: Добавлена поддержка samesite атрибут.

Morsel.value

Значение cookie.

Morsel.coded_value

Кодированный значение файла cookie — это то, что должно быть отправлено.

Morsel.key

Имя cookie.

Morsel.set(key, value, coded_value)

Задайте key, value и coded_value атрибуты.

Morsel.isReservedKey(K)

Является ли K членом набора клавиш Morsel.

Morsel.output(attrs=None, header='Set-Cookie:')

Возвращает представление строка кусочка, подходящего, чтобы быть посланным как заголовок HTTP. По умолчанию все атрибуты включены, если attrs не дан, в этом случае это должен быть список атрибуты, чтобы использовать. header по умолчанию является "Set-Cookie:".

Morsel.js_output(attrs=None)

Возвращает встраиваемый фрагмент JavaScript, который при запуске в браузере, поддерживающем JavaScript, будет действовать так же, как при отправке заголовка HTTP.

Значение для attrs такое же, как и в output().

Morsel.OutputString(attrs=None)

Возвращает строка, представляющий морсель, без какого-либо окружающего HTTP или JavaScript.

Значение для attrs такое же, как и в output().

Morsel.update(values)

Обновите значения в словаре Морселя с помощью значения в словаре values. Вызовите ошибку, если любой из ключей в values словарь не является допустимым RFC 2109 атрибут.

Изменено в версии 3.5: Для недопустимых ключей возникает ошибка.

Morsel.copy(value)

Возвращает неглубокую копию объекта Морселя.

Изменено в версии 3.5: Возвращает объект Морселя вместо словаря.

Morsel.setdefault(key, value=None)

Вызовите ошибку, если ключ не является допустимым RFC 2109 атрибут, в противном случае ведите себя так же, как dict.setdefault().