Django设置Cookie的过期时间expires, max_age的格式

cookie中 max_age和expires的关系:

1. 若没有填写 max_age, expires ,默认都为None
    此时该cooike为临时的,只存在浏览器内存中, 关闭浏览器则自动删除
2. 只有max_age,  则按秒计算过期时间, 浏览器会存在本地缓存路径, 并自动删除过期cookie
3. 只有expires,  则按照时间字符串计算过期时间, 浏览器会存在本地缓存路径, 自动删除过期cookie
3. 若 max_age和 expires 同时存在,  则默认使用 max_age
4. 如果设置的cookie时间小于计算机时间, 浏览器则不提取cookie

max_age 格式:

max_age = 60*60*24   #按秒计算

expires 格式:

epires格式可以为:
    1.时间格式的字符串 : " Wdy, DD-Mth-YY HH:MM:SS GMT "
    2.datetime.datetime 对象
例:
expires = ‘Thu, 28-May-2020 08:53:06 GMT‘       # 24小时 格林威治时间
expires = datetime.datetime(2020, 5, 28, 23, 44, 55))

通过Chrome 查看设置完毕的效果:



为方便使用,可以自定义方法, 智能设置expires的过期时间

from django.conf import settings
import datetime

def set_cookie(response, key, value, expire=None):
    if expire is None:
        max_age = 365*24*60*60  #默认max_age为一年, 如果存在expires,则覆盖max_age
    else:
        max_age = expire
    expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
    response.set_cookie(key, value, max_age=max_age, expires=expires,
    domain=settings.SESSION_COOKIE_DOMAIN, secure=settings.SESSION_COOKIE_SECURE or None)

本文参考并总结: https://www.djangosnippets.org/snippets/40/

原文地址:https://blog.51cto.com/dldxzjr/2402295

时间: 2024-11-07 12:44:24

Django设置Cookie的过期时间expires, max_age的格式的相关文章

怎样设置cookie的到期时间

1. 使用Cookie的: Expires 属性. 它可以设置cookie的过期时间. 下面的代码表示id这条cookie的过期时间是2015年10月21日早上7点28分; Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; 2. 使用Cookie的: Max-Age 属性. 它可以指定从现在开始Cookie存在的秒数. 秒数过完则cookie过期. Set-Cookie: id=a3fWa; Max-Age=86400 注意

cookie的过期时间

设置cookie过期时间 默认cookies失效时间是直到关闭浏览器,cookies失效,也可以指定cookies时间. Response.Cookies("user_name").Expires=Date+1 '指定cookie保存时间 保留COOKIES一个小时 Response.Cookies("MyCookie").Expires= (now()+1/24) Response.Cookies("MyCookie").Expires = D

采用Asp.Net的Forms身份验证时,持久Cookie的过期时间会自动扩展

问题描述 之前没有使用Forms身份验证时,如果在登陆过程中把持久的Cookie过期时间设为半个小时,总会收到很多用户的抱怨,说登陆一会就过期了. 所以总是会把Cookie过期时间设的长一些,比如两个小时甚至一天,这样就能保证在登陆时设置一次Cookie,用户可以操作很长时间也不过期. 虽然也可以在每次用户请求页面时检查Cookie的过期时间并自动扩展,但未免过于麻烦,不如一次设大点来的简单. 偶然发现 今天在使用Forms身份验证编写<AppBox-基于ExtAspNet的企业通用管理框架>

采用Asp.Net的Forms身份验证时,非持久Cookie的过期时间会自动扩展

问题描述 之前没有使用Forms身份验证时,如果在登陆过程中把HttpOnly的Cookie过期时间设为半个小时,总会收到很多用户的抱怨,说登陆一会就过期了. 所以总是会把Cookie过期时间设的长一些,比如两个小时甚至一天,这样就能保证在登陆时设置一次Cookie,用户可以操作很长时间也不过期. 虽然也可以在每次用户请求页面时检查Cookie的过期时间并自动扩展,但未免过于麻烦,不如一次设大点来的简单. 偶然发现 今天在使用Forms身份验证编写<AppBox-基于ExtAspNet的企业通用

Linux date命令-显示和设置系统日期与时间 压缩包以YYMMDD格式命令

date --help用法:date [选项]... [+格式] 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]以给定的格式显示当前时间,或是设置系统日期. -d,--date=字符串        显示指定字符串所描述的时间,而非当前时间  -f,--file=日期文件        类似--date,从日期文件中按行读入时间描述  -r, --reference=文件        显示文件指定文件的最后修改时间  -R, --rf

chrome会话cookie显示过期时间为1969-12-31T23:59:59.000Z

cookie不设置过期时间的话,为浏览器会话cookie,关闭浏览器自动删除cookie 但是在chrome浏览器下,cookie过期时间显示为“1969-12-31T23:59:59.000Z” 在firefox下,cookie过期时间显示为“会话”cookie chrome为啥会这样呢?不解... 原文地址:https://www.cnblogs.com/imust2008/p/9297380.html

java设置配置session过期时间的方法

1) Timeout in the deployment descriptor (web.xml)以分钟为单位 代码如下 复制代码 <web-app ...> <session-config> <session-timeout>20</session-timeout> </session-config></web-app> 上面这种设置,对整个web应用生效.当客户端20分钟内都没有发起请求时,容器会将session干掉. 2) Ti

怎么设置头文件过期时间为当前时间+1天

window.onload =function(){ //在这里创建一个<META>元素添加到<head>节点.注意去今天的GMT时间,然后+1 var meta; if (document.createElement &&(meta = document.createElement('meta'))){ // 设置属性 meta.setAttribute("http-equiv","expires"); //var expi

thinkphp3.2设置session的过期时间

thinkPHP3.2中session的过期时间配置是不能使用的,我们需要修改一下它的配置文件thinkPHP>common>functions.php,找到这一行: if(isset($name['expire'])) ini_set('session.gc_maxlifetime', $name['expire']); 改成: if(isset($name['expire'])) ini_set('session.gc_maxlifetime', $name['expire']);ini_