Файлы cookie
Получение файлов cookie
class Resource(object):
def on_get(self, req, resp):
cookies = req.cookies
if 'my_cookie' in cookies:
my_cookie_value = cookies['my_cookie']
# ....
Атрибут cookies — это обычный объект dict.
Подсказка
Атрибут cookies возвращает копию словаря cookie ответа. Присвойте его переменной, как показано в примере выше, чтобы повысить производительность при необходимости поиска нескольких cookie.
Установка файлов cookie
Метод set_cookie() следует использовать вместо set_header() или append_header(). С помощью set_header() нельзя задать несколько заголовков с одинаковым именем (а именно так отправляются несколько cookie клиенту). Кроме того, append_header() добавляет несколько значений к одному полю заголовка способом, несовместимым со специальным форматом, требуемым заголовком Set-Cookie.
Простой пример:
class Resource(object):
def on_get(self, req, resp):
# Set the cookie 'my_cookie' to the value 'my cookie value'
resp.set_cookie('my_cookie', 'my cookie value')
Конечно, вы также можете установить домен, путь и срок действия cookie.
class Resource(object):
def on_get(self, req, resp):
# Set the maximum age of the cookie to 10 minutes (600 seconds)
# and the cookie's domain to 'example.com'
resp.set_cookie('my_cookie', 'my cookie value',
max_age=600, domain='example.com')
Вы также можете попросить клиента удалить cookie с помощью метода unset_cookie():
class Resource(object):
def on_get(self, req, resp):
resp.set_cookie('bad_cookie', ':(')
# Clear the bad cookie
resp.unset_cookie('bad_cookie')
Атрибут Secure
По умолчанию Falcon устанавливает атрибут secure для cookie. Это указывает клиенту никогда не передавать cookie в открытом виде по протоколу HTTP, чтобы защитить любые конфиденциальные данные, которые может содержать cookie. Если cookie установлена, а последующий запрос выполняется по HTTP (а не HTTPS), клиент не включит эту cookie в запрос.
Предупреждение
Для того чтобы этот атрибут был эффективным, вашему веб-серверу или балансировщику нагрузки необходимо применять HTTPS при установке cookie, а также во всех последующих запросах, для которых требуется отправка cookie клиентом.
При запуске приложения в среде разработки вы можете отключить это поведение по умолчанию, установив secure_cookies_by_default в False через API.resp_options. Это позволяет вам тестировать приложение локально без необходимости настройки TLS. Вы можете сделать этот параметр настраиваемым, чтобы легко переключаться между средами разработки и производства.
См. также: RFC 6265, Раздел 4.1.2.5
© 2012–2017 by Rackspace Hosting, Inc. and other contributors
Licensed under the Apache License, Version 2.0.
https://falcon.readthedocs.io/en/1.4.1/api/cookies.html