在Plone中设置过期的cookie

时间:2012-02-22 09:14:47

标签: cookies plone zope

我想在未来的几个小时内设置一个过期时间的Cookie

已经存在一个显示如何设置cookie的问题:

How do you get and set cookies in Zope and Plone?

...但我没有找到如何以“正确的方式”使用Zope生成RFC 822时间戳的示例。看起来其他框架在日期时间内部生成时间戳。

也可以让浏览器关闭时到期的cookie?这个没有失效日期吗?

2 个答案:

答案 0 :(得分:3)

您可以通过在Cookie上设置expires属性,将Cookie设置为将来某个日期到期。这应该是使用Python标准库中formatdate模块的email.Utils生成的RFC822值。

import time
from email.Utils import formatdate
expiration_seconds = time.time() + (5*60*60) # 5 hours from now
expires = formatdate(expiration_seconds, usegmt=True) 
response.setCookie('cookie_name', 'value', path='/', expires=expires)

(Internet Explorer不支持cookie规范建议的max-age属性。)

如果您想要在关闭浏览器时清除cookie,请不要设置过期值。

请注意。始终设置cookie有效的路径或仅在您设置的页面上有效的路径非常重要。

答案 1 :(得分:2)

您可以查看这两个问题的答案,以了解如何生成有效的RFC 822 date time值。

  1. What is the best way to convert a zope DateTime object into Python datetime object?
  2. How do I convert RFC822 to a python datetime object?
  3. 为了创建一个在浏览器关闭后过期的cookie,只需创建一个没有过期日期的cookie。这将生成一个会话cookie,一旦浏览器会话到期,它将过期。