Spec-Zone.ru › Falcon 2.0

Куки

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

Куки можно считать из запроса с помощью метода get_cookie_values() или атрибута cookies объекта Request. Как правило, следует использовать метод get_cookie_values(), если вам не нужна коллекция всех куки в запросе.

class Resource(object):
    def on_get(self, req, resp):

        cookies = req.cookies

        my_cookie_values = req.get_cookie_values('my_cookie')
        if my_cookie_values:
            # NOTE: If there are multiple values set for the cookie, you
            # will need to choose how to handle the additional values.
            v = my_cookie_values[0]

            # ...

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

Установка куки в ответе может быть выполнена с помощью set_cookie() или append_header().

Один из этих методов следует использовать вместо set_header(). С помощью set_header() нельзя установить несколько заголовков с одним и тем же именем (а именно таким образом отправляются несколько куки клиенту).

Простой пример:

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

© 2019 by Falcon contributors
Licensed under the Apache License, Version 2.0.
https://falcon.readthedocs.io/en/2.0.0/api/cookies.html

Spec-Zone.ru

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