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