Python:持久性cookie,生成`expires`字段
我正在尝试为一个简单的Python网页应用生成一个持久性cookie的文本。
我在生成expires
字段时遇到了困难。这个字段的文本格式有点复杂,我不想自己写代码来生成它。
在Python中有没有什么可以帮助我的?我查看了cookie
和cookielib
的文档,它们似乎处理了很多关于cookie的事情,但就是没有生成expires
字段的内容。
4 个回答
0
Python中的time.strftime()
函数可以根据RFC 6265的规定,格式化一个时间,用于设置cookie的expires
(过期时间)。
import time
lease = 14 * 24 * 60 * 60 # 14 days in seconds
end = time.gmtime(time.time() + lease)
expires = time.strftime("%a, %d-%b-%Y %T GMT", end)
print(expires)
输出结果:
Tue, 23-Oct-2012 17:10:51 GMT
时间区域应该被忽略,但由于所有示例都包含“GMT”,所以保留它可能更安全。
这段内容基于Gareth Rees的回答。
7
如果我没记错的话,当你使用 Cookie.SimpleCookie
时,你只需要在expires字段里指定一个以秒为单位的过期时间,比如:
from Cookie import SimpleCookie
c = SimpleCookie()
c['sid'] = 'xxx'
c['sid']['path'] = '/'
c['sid']['expires'] = 12 * 30 * 24 * 60 * 60 # 1 year
然后,使用 c.output()
的结果会像这样返回:
'Set-Cookie: sid=xxx; expires=Mon, 20 Jul 2015 14:42:35 GMT; Path=/'
18
我觉得你想做的事情大概是这样的:
import Cookie, datetime, uuid
ck = Cookie.SimpleCookie()
ck['session'] = str(uuid.uuid4())
ck['session']['domain'] = 'foo.com'
ck['session']['path'] = '/'
expires = datetime.datetime.utcnow() + datetime.timedelta(days=30) # expires in 30 days
ck['session']['expires'] = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")
>>> print ck.output()
Set-Cookie: session=9249169b-4c65-4daf-8e64-e46333aa5577; Domain=foo.com; expires=Mon, 01 Aug 2011 07:51:53 GMT; Path=/