Files
deb-python-falcon/doc/api/cookies.rst
2015-04-22 19:09:17 -05:00

2.2 KiB

Cookies

Cookie support is available in Falcon version 0.3 or later.

Getting Cookies

Cookies can be read from a request via the :py~.Request.cookies request attribute:

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

        cookies = req.cookies

        if "my_cookie" in cookies:
            my_cookie_value = cookies["my_cookie"]
        # ....

The :py~.Request.cookies attribute is a regular :pydict object.

Setting Cookies

Setting cookies on a response is done via the :py~.Response.set_cookie.

You should use :py~.Response.set_cookie instead of :py~.Response.set_header or :py~.Response.append_header.

With :py~.Response.set_header you cannot set multiple headers with the same name (which is how multiple cookies are sent to the client).

:py~.Response.append_header appends multiple values to the same header field, which is not compatible with the format used by Set-Cookie headers to send cookies to clients.

Simple example:

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

You can of course also set the domain, path and lifetime of the cookie.

class Resource(object):
    def on_get(self, req, resp):
        # Set the 'max-age' of the cookie to 10 minutes (600 seconds)
        # and the cookies domain to "example.com"
        resp.set_cookie("my_cookie", "my cookie value",
                        max_age=600, domain="example.com")

If you set a cookie and want to get rid of it again, you can use the :py~.Response.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")