Создание cookies

sozdanie cookies Сценарии на стороне сервера

Веб-броузеры, такие как Firefox и Internet Explorer, в целом обеспечивают корректную работу с этим протоколом на стороне клиента, сохраняя и отправляя данные в cookies. В этой главе нас в основном интересует обработка cookies на стороне сервера. Cookies создаются в результате передачи специальных заголовков HTTP в начале потока ответа:

Content-type: text/html Set-Cookie: foo=bar;

<HTML>

Полный формат заголовка «Set-Cookie» имеет следующий вид:

Set-Cookie: name=value; expires=date; path=pathname; domain=domainname; secure

По умолчанию в параметре domain передается сетевое имя сервера, отправившего cookies, а в параметре path — путь к документу или сценарию, который устанавливает cookies. Эти параметры позднее используются клиентом, чтобы определить, когда отправлять cookies обратно на сервер. Создание cookies на языке Python реализуется очень просто — следующие инструкции в сценарии CGI сохраняют cookies с временем последнего посещения сайта:

import http.cookies, time

cook = http.cookies.SimpleCookie()

cook[‘visited’] = str(time.time()) # словарь

print(cook.output()) # выведет "Set-Cookie: visited=1276623053.89"

print(‘Content-type: text/html\n’)

Вызов функции SimpleCookie здесь создает объект, напоминающий словарь, ключами которого являются строки (имена cookies), а значениями — объекты Morsel (описывающие значения cookies). Объекты Morsel в свою очередь также являются объектами, похожими на словари, содержащими по одному ключу для каждого свойства cookies: path и domain; expires, определяющее дату истечения срока хранения cookies (по умолчанию cookies считаются действительными только на протяжении сеанса работы броузера); и так далее. Кроме того, объекты Morsel имеют дополнительные атрибуты — например, key и value, определяющие имя и значение cookies соответственно. Операция присваивания ключу объекта cookies автоматически создает объект Morsel из строки, а метод output объектов cookies возвращает строку, которую можно использовать в качестве заголовка HTTP; тот же эффект дает непосредственная попытка вывода объекта с помощью функции print благодаря переопределению метода __str__ перегрузки оператора. Ниже приводится более полный пример использования этого интерфейса:

>  >> import http.cookies, time

>  >> cooks = http.cookies.SimpleCookie()

>  >> cooks[‘visited’] = time.asctime()

>  >> cooks[‘username’] = ‘Bob’

>  >> cooks[‘username’][‘path’] = ‘/myscript’

>>> cooks[‘visited’].value ‘Tue Jun 15 13:35:20 2010’ >>> print(cooks[‘visited’]) Set-Cookie: visited="Tue Jun 15 13:35:20 2010" >>> print(cooks)

Set-Cookie: username=Bob; Path=/myscript

Set-Cookie: visited="Tue Jun 15 13:35:20 2010"

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий