Django:设置为 30 秒后过期的 Cookie 实际上会在 30 分钟后过期?

2024-06-25

这是我的代码:

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,则“过期”日期为:

Tue Apr 5 23:50:07 2011

我究竟做错了什么?


您可以使用max_age带有秒数的参数而不是使用expires;它会计算expires为你。你的问题datetime.now()可能是您没有使用 UTC(您可以使用datetime.utcnow()反而)。

hr.set_cookie('user_id', user_id, max_age=30)

故事的道德启示:阅读文档 http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponse.set_cookie;它解释了您需要使用 UTCdatetime对象并描述max_age.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:设置为 30 秒后过期的 Cookie 实际上会在 30 分钟后过期? 的相关文章

随机推荐