我无法让龙卷风中的cookie过期。有人可以知道吗?
注意:get_cookie和get_secure_cookie用于获取cookie的值
答案 0 :(得分:1)
Tornado使用http.cookies.Cookie.SimpleCookie
来解析请求标头中的Cookie。这将创建一个http.cookies.Morsel
实例(https://docs.python.org/3/library/http.cookies.html?highlight=cookies#morsel-objects)的字典,其中包含有关每个cookie的信息。
您可以访问RequestHandler
request
财产的Cookie列表,例如:
class MyHandler(RequestHandler):
def get(self):
for cookie_key in self.request.cookies.keys():
cookie = self.request.cookies[cookie_key]
print(cookie_key, cookie['expires'], cookie.output())
我已经在本地运行的tornado实例上对此进行了测试,这确实将有关cookie的详细信息输出到控制台,但是expires
日期未被浏览器(铬)传递给请求中的服务器,因此无法检索。
我没有看到以这种方式提取有关expires
日期信息的任何保证方式,您可能会使用JavaScript来提取expires
日期(可用客户端)和将其存储在其他Cookie中(例如my_cookie
保存该值,my_cookie_expires
保存expires
的{{1}}日期。我确定这不是一个理想的解决方案,但取决于解决这个问题的重要性,它可能是一个选择。
答案 1 :(得分:1)
使用普通的cookie,您无法读取到期时间 - 它根本不作为cookie协议的一部分发送。你得到的只是价值。但是,该值可以是您想要的任何值,因此您可以将到期时间编码为值以使其可在服务器上访问(这是Tornado的安全cookie所执行的操作,尽管其中使用的到期时间未暴露给应用程序) 。我建议使用json编码字典来制作cookie值。