这是我的代码:
def update_session(request):
if not request.is_ajax() or not request.method=='POST':
return HttpResponseNotAllowed(['POST'])
user_id = request.POST.get('u')
hr = set_terminal_cookie(user_id)
return hr
def set_terminal_cookie(user_id):
print 'set_terminal_cookie'
hr = HttpResponse('ok')
print datetime.datetime.now()
expiry_time = datetime.datetime.now() + datetime.timedelta(seconds=30)
print expiry_time
hr.set_cookie('user_id', user_id, expiry_time)
return hr
这是日志输出:
set_terminal_cookie
2011-04-05 23:16:36.706624
2011-04-05 23:17:06.706806
但是,如果我在Firefox中检查“user_id”cookie,则“Expires”日期为:
Tue Apr 5 23:50:07 2011
我做错什么了?
您可以在数秒内使用
max_age
参数,而不是使用expires
;它将为您计算expires
。您的datetime.now()
的问题可能是您没有使用UTC(您可以使用datetime.utcnow()
)。故事的寓意是:read the documentation;它解释了需要使用UTC
datetime
对象,并描述了max_age
。对于那些在使用签名cookie时遇到相同问题的用户,必须将^{} 与} 方法设置它,但是当再次获取它时,这不起作用。
max_age
属性一起使用。我尝试用^{所以这不会使你的cookie过期:
但当按如下方式获取时,它应该可以工作(在cookie上设置和不设置
max_age
):请改为:
max_age参数是希望cookie持续的秒数。
相关问题 更多 >
编程相关推荐