【问题标题】:Get tornado cookie expires in back-end获取tornado cookie在后端过期
【发布时间】:2015-05-25 22:34:30
【问题描述】:

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

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

【问题讨论】:

    标签: tornado


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      您可以根据您的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())
      

      我已经在本地运行的龙卷风实例上对此进行了测试,它确实将有关 cookie 的详细信息输出到控制台,但是 expires 日期没有通过浏览器(铬)在对服务器的请求中传递,所以它无法检索。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-26
        • 1970-01-01
        • 2011-05-11
        • 2011-09-20
        相关资源
        最近更新 更多