Spec-Zone.ru › Falcon 1.3

Куки

Поддержка куки доступна в 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.3.0/api/cookies.html

Spec-Zone.ru

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