龙卷风cookie在后端过期

时间:2015-05-25 06:41:42

标签: tornado

我无法让龙卷风中的cookie过期。有人可以知道吗?

注意:get_cookie和get_secure_cookie用于获取cookie的值

2 个答案:

答案 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值。

相关问题