2012-02-22 54 views
3

過期餅乾我想設定到期在幾個小時的時間在未來設置在Plone

已經存在一個問題,它展示瞭如何設置一個cookie餅乾:

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

...但我沒有找到示例如何用「正確的方式」與Zope生成RFC 822時間戳。看起來像其他框架從日期時間內部時間戳生成。

也有可能有瀏覽器關閉到期的cookies?這是一個沒有失效日期嗎?

回答

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?

爲了營造其儘快關閉瀏覽器過期餅乾,只需創建一個cookie沒有到期日。這將生成一個會話cookie,該會話cookie將在瀏覽器會話過期後立即失效。

+0

更安全地使用'email.Utils.formatdate(秒,usegmt = True)'推出自己的RFC 822格式化例程。 – 2012-02-22 21:48:32

3

您可以通過在cookie上設置expires屬性來將cookie設置爲將來某個日期到期。這應該是Python標準庫中email.Utils模塊的formatdate生成的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規範建議的最大年齡屬性。)

根本就沒有設置,如果你想被清除cookie中,當你關閉瀏覽器的到期值。

注意。始終設置您的Cookie有效的路徑非常重要,否則它只會在您設置的頁面上有效。