在 Plone 中设置过期的 cookie

发布于 2025-01-07 22:37:52 字数 330 浏览 0 评论 0原文

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

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

如何在 Zope 和 Plone 中获取和设置 cookie?

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

另外,是否有可能让 cookie 在浏览器关闭时过期?这个是没有保质期的吗?

I'd like to set a cookie with expire time in few hours in the future

There already exist a question which shows how to set a cookie:

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

... but I didn't find examples how to generate RFC 822 timestamp with Zope in "right way". Looks like other frameworks do timestamp generation internally from datetime.

Also is it possible to have cookies which expiry on a browser closing? Is this one without expiry date?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心如荒岛 2025-01-14 22:37:52

您可以通过在 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 规范建议的 max-age 属性。)

如果您希望 cookie 在关闭浏览器时被清除,则无需设置过期值。

笔记。务必设置您的 cookie 有效的路径,否则它仅在您设置的页面上有效。

You can set a cookie to expire at a date in the future by setting an expires attribute on the cookie. This should be an RFC822 value generated with formatdate from the email.Utils module in the Python standard library.

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 does not support the max-age attribute suggested by the cookie spec.)

Simply don't set an expires value if you want a cookie that is cleared when you close your browser.

Note. It's important to always set a path that your cookie is valid or it will only be valid on the page you set it.

俏︾媚 2025-01-14 22:37:52

您可以查看这两个问题的答案,以便了解如何生成有效的 RFC 822 日期时间 值。

  1. 将 zope DateTime 对象转换为 Python 日期时间对象的最佳方法是什么?
  2. 如何将 RFC822 转换为 python 日期时间对象?

为了创建一个在浏览器关闭后立即过期的 cookie,只需创建一个没有过期日期的 cookie。这将生成一个会话 cookie,该 cookie 将在浏览器会话过期后立即过期。

You can see the answers to these two questions, in order to understand how to generate valid RFC 822 date time value.

  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?

In order to create a cookie which expires as soon as the browser is closed, just create a cookie without a expiry date. This will generate a session cookie, which will expire as soon as the browser session expires.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文