【发布时间】:2015-05-25 22:34:30
【问题描述】:
我无法在龙卷风中获取 cookie 过期天数。有人知道吗?
注意:get_cookie和get_secure_cookie用于获取cookie的值
【问题讨论】:
标签: tornado
我无法在龙卷风中获取 cookie 过期天数。有人知道吗?
注意:get_cookie和get_secure_cookie用于获取cookie的值
【问题讨论】:
标签: tornado
使用普通的 cookie,您无法读取过期时间 - 它只是不作为 cookie 协议的一部分发送。你得到的只是价值。但是,该值可以是您想要的任何值,因此您可以将过期时间编码为该值以使其在服务器上可访问(这是 Tornado 的安全 cookie 所做的,尽管使用的过期时间不会暴露给应用程序) .我建议对字典进行 json 编码以生成 cookie 值。
【讨论】:
Tornado 使用 http.cookies.Cookie.SimpleCookie 解析请求标头中的 cookie。这将创建一个包含有关每个 cookie 的信息的 http.cookies.Morsel 实例 (https://docs.python.org/3/library/http.cookies.html?highlight=cookies#morsel-objects) 的字典。
您可以根据您的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())
我已经在本地运行的龙卷风实例上对此进行了测试,它确实将有关 cookie 的详细信息输出到控制台,但是 expires 日期没有通过浏览器(铬)在对服务器的请求中传递,所以它无法检索。
我看不到以这种方式提取有关 expires 日期信息的任何保证方法,您可以使用 JavaScript 提取 expires 日期(客户端可用)并将其存储在附加 cookie 中(例如,my_cookie 保存该值,my_cookie_expires 保存 expires 日期为 my_cookie)。我确信这不是一个理想的解决方案,但取决于解决此问题的关键程度,它可能是一种选择。
【讨论】: