Spec-Zone.ru › Falcon 1.2

Куки

Поддержка куки доступна в Falcon версии 0.3 или выше.

Получение куки

Куки можно прочитать из запроса через атрибут cookies запроса:

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 возвращает копию словаря куки ответа. Присвойте его переменной, как показано в приведенном выше примере, чтобы повысить производительность, когда вам нужно получить доступ к нескольким куки.

Установка куки

Установка куки в ответе выполняется через set_cookie().

Следует использовать метод set_cookie(), а не set_header() или append_header(). С помощью set_header() невозможно установить несколько заголовков с одинаковым именем (а именно так отправляются несколько куки клиенту). Кроме того, 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')

Конечно, вы также можете задать домен, путь и срок действия куки.

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')

Вы также можете попросить клиента удалить куки с помощью метода 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 для куки. Это сообщает клиенту никогда не передавать куки открытым текстом по HTTP для защиты любых конфиденциальных данных, которые могут содержаться в куки. Если куки установлена, а последующий запрос выполнен по HTTP (а не HTTPS), клиент не включит эту куки в запрос.

Предупреждение

Для того, чтобы этот атрибут был эффективным, вашему веб-серверу или балансировщику нагрузки потребуется принудительно устанавливать HTTPS при установке куки, а также во всех последующих запросах, где требуется, чтобы клиент отправил куки обратно.

При выполнении приложения в среде разработки вы можете отключить это поведение по умолчанию, установив secure_cookies_by_default в значение False через API.resp_options. Это позволит протестировать приложение локально, не устанавливая TLS. Вы можете сделать этот параметр настраиваемым, чтобы легко переключаться между средами разработки и производства.

См. также: RFC 6265, раздел 4.1.2.5

© 2012–2016 by Rackspace Hosting, Inc. and other contributors
Licensed under the Apache License, Version 2.0.
https://falcon.readthedocs.io/en/1.2.0/api/cookies.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API