Документация, и, что более важно, некоторые примеры кода были бы очень полезными. Я бы предпочел, чтобы это не было в защищенных сценариях, а в коде, который входит в современные пакеты.Как получить и установить файлы cookie в Zope и Plone?
ответ
Используйте метод response.setCookie()
. Вы можете достичь объекта ответа через объект запроса. Последнее можно достичь за счет приобретения (self.REQUEST
), или в представлениях путем доступа к переданному в объект запроса, как правило, через self.request
:
self.request.response.setCookie(name, value, **options)
где options
в конечном итоге, как дополнительные параметры печенья. Таким образом, для превращения cookie в несеансовый файл cookie требуется ключевое слово expires='date'
, ограничение печенья на путь - это ключевое слово path='/somepath'
для метода setCookie()
. Здесь применяются обычные правила cookie браузера.
истечь печенье уже установлен в браузере, вы можете либо использовать expires='date in the past'
ключевое слово, или вы можете использовать response.expireCookie()
метод, который делает это для вас:
self.request.response.expireCookie(name, **options)
В этом случае вы можете включить такие как path
или другие флагов cookie, но метод переопределяет параметры max_age
и expires
, чтобы гарантировать, что cookie будет удален браузером.
Хотя вы можете использовать поддержку Zope SESSION
, вам действительно нужно продумать проблемы масштабируемости. Например, вам нужно подумать о том, как данные сеанса будут передаваться через кластер, если вы используете ZEO или RelStorage. Как правило, предпочтительно избегать использования SESSION
, если масштабируемость будет проблемой.
Для установки файлов cookie вы используете RESPONSE.setCookie.
>>> self.REQUEST.RESPONSE.setCookie('cookiename', 'cookievalue', expires='Wed, 22 June 2009 12:00:00 GMT')
В следующем запросе файл cookie будет завершен в запросе.
>>> self.REQUEST['cookiename']
'cookievalue'
Вы «удаляете» cookie с использованием None
в качестве значения.
** Обратите внимание, что в большинстве случаев, когда люди используют куки-файлы, они хранят переменные, которые связаны с сеансами, и вы можете использовать self.REQUEST.SESSION для этого, это проще.
Спасибо за этот ответ! Мы запускаем с 3-4 экземплярами на приложение zope, поэтому * не * нужно беспокоиться о том, какой экземпляр мы нажимаем, это очень хорошая вещь. – pydanny