获取龙卷风cookie在后端过期

Get tornado cookie expires in back-end

我无法在龙卷风中获取 cookie 过期天数。有人知道吗?

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

Tornado 使用 http.cookies.Cookie.SimpleCookie 解析请求 header 中的 cookie。这将创建一个包含 http.cookies.Morsel 个实例 (https://docs.python.org/3/library/http.cookies.html?highlight=cookies#morsel-objects) 的字典,其中包含有关每个 cookie 的信息。

您可以访问针对您 RequestHandlerrequest 属性 的 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 日期未由浏览器 (chromium) 在对服务器的请求,因此无法检索。

我看不到任何以这种方式提取有关 expires 日期的信息的可靠方法,您可以使用 JavaScript 来提取 expires 日期(可用客户端)并将其存储在附加 cookie 中(例如 my_cookie 保存值,my_cookie_expires 保存 my_cookieexpires 日期)。我确信这不是一个理想的解决方案,但取决于解决此问题的重要性,它可能是一个选择。

对于普通 cookie,您无法读取过期时间 - 它根本不是作为 cookie 协议的一部分发送的。你得到的只是价值。但是,该值可以是您想要的任何值,因此您可以将过期时间编码到该值中以使其在服务器上可访问(这就是 Tornado 的安全 cookie 所做的,尽管那里使用的过期时间不会暴露给应用程序) .我推荐json-编码一个字典来制作cookie值。