Cookies¶
Cookie support is available in Falcon version 0.3 or later.
Getting Cookies¶
Cookies can be read from a request via the 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 cookies attribute is a regular dict object.
Tip
cookies returns a copy of the response cookie dict. Assign it to a variable as in the above example for better performance.
Setting Cookies¶
Setting cookies on a response is done via the set_cookie().
You should use set_cookie() instead of set_header() or append_header().
With set_header() you cannot set multiple headers with the same name (which is how multiple cookies are sent to the client).
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 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")