控制Cookies

Cookies是服务端在客户端临时保存信息的主要手段,虽然客户端可以随时进行清除,但是在其中保存一些需要连续处理的业务鉴别信息也是非常常见的选择。Cookies可以通过处理函数中Request类型参数中的.cookies属性来访问,.cookies属性中以字典类型保存了从客户端传来的全部Cookies。

要向客户端写入Cookies需要提前创建HTTPResponse类型对象,并通过其中的.cookies属性来设置。HTTPResponse实例中的.cookies属性是一个字典类型,要新建一个Cookies项,只需要对一个新的键赋值即可。如果要删除一个已有的Cookies项,只需要用del关键字删除即可,例如:del response.cookies["sessionid"]

HTTPResponse实例中的每一个Cookies项都是一个字典类型的值,可以通过以下预定义的键值来控制Cookies项的属性。

  • expires,日期类型,用于设置Cookies的过期时间。
  • path,设置Cookies生效的URL。
  • comment,Cookies的备注。
  • domain,设置Cookies生效的域名。
  • max-age,设置Cookies有效的最长秒数。
  • secure,当设置为True时,Cookies将只能在HTTPS下生效。
  • httponly,设置Javascript是否能读取这个Cookies。

在一个处理函数中设置客户端的Cookies可以参考以下示例。

@app.route("/")
async def home(request):
	session_id = request.cookies["session_id"]
	
	response = response.text("Hello!")
	response.cookies["test"] = "Hello there"
	response.cookies["test"]["max-age"] = 60
	
	return response