Python Falcon - cookie


cookie 以文本文件的形式存储在客户端的计算机上。其目的是记住和跟踪与客户使用情况相关的数据,以获得更好的访问者体验和网站统计数据。

Request 对象包含 cookie 的属性。它是客户端传输的所有 cookie 变量及其相应值的字典对象。除此之外,cookie 还存储其到期时间、站点路径和域名。

在 Falcon 中,cookie 是使用set_cookie()方法在响应对象上设置的。

resp.set_cookie('cookiename', 'cookievalue')

此外,还可以给出 cookie 的max_age (以秒为单位)和域名的参数。

import falcon
import json
from waitress import serve
class resource1:
   def on_post(self, req, resp):
      resp.set_cookie("user", 'admin')
      resp.text = "cookie set successfully."
      resp.status = falcon.HTTP_OK
      resp.content_type = falcon.MEDIA_TEXT

从命令行调用响应者方法:

http POST localhost:8000/cookie
HTTP/1.1 200 OK
Content-Length: 24
Content-Type: text/plain; charset=utf-8
Date: Tue, 26 Apr 2022 06:56:30 GMT
Server: waitress
Set-Cookie: user=admin; HttpOnly; Secure
cookie set successfully.

cookie Set-cookie 头也可以使用响应对象的append_header()方法来设置。

要检索 cookie,请求对象具有request.cookies属性以及get_cookie_values()方法。

def on_get(self, req, resp):
   cookies=req.cookies
   values = req.get_cookie_values('user')
   if values:
      v = values[0]
      resp.body={"user":v}
   resp.status = falcon.HTTP_OK
   resp.content_type = falcon.MEDIA_JSON

响应对象的unset_cookie方法清除当前请求的cookie。

resp.unset_cookie('user')

对于 ASGI 应用程序,falcon.asgi.Request实现与falcon.Request相同的 cookie 方法和属性。ASGI 版本的set_cookie()append_header()是同步的,因此不需要等待它们。