惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
S
Securelist
MyScale Blog
MyScale Blog
Jina AI
Jina AI
罗磊的独立博客
The Cloudflare Blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
雷峰网
雷峰网
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
博客园 - 聂微东
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
Attack and Defense Labs
Attack and Defense Labs
博客园_首页
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
D
Docker
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
V2EX - 技术
V2EX - 技术
N
News | PayPal Newsroom
Microsoft Security Blog
Microsoft Security Blog

博客园 - Sameen

上下文工程学习笔记 什么是vibe ? 什么是 embedding ? angular中asObservable是什么的,为什么需要用? vscode问题 JavaScript中的Date squash merge Element.scrollIntoView requestIdleCallback angular学习笔记 [转]React hooks useEffect中如何使用异步函数(即如何使用async/await) css斜条纹背景——linear-gradient 【转】过滤不可见字符 换电脑快捷同步vscode插件和配置 Git自动补全配置安装(Mac版本) Mac上看不到.git目录下的隐藏文件的解决方法 ts 问号点 ?. moment获取本月、上个月、近三个月时间段 iframe优缺点
document cookie
Sameen · 2023-03-06 · via 博客园 - Sameen

# expires

1、expires的含义 

expires 定义了一个Cookie什么时候过期失效。
expires 属性名大小写不敏感,任何字母大写或者小写都有效。
expires 的值按照标准中的说明是区分大小写的,但是目前的主流浏览器均不区分大小写。

举例: 11 Nov 2022 06:05:33 GMT 

2、expires的格式 

expires 的格式和Javascript的 Date.prototype.toUTCString() 函数返回的值格式一致,是UTC+0(经度0度位置)的时间。
格式如下:

Www, dd Mmm yyyy hh:mm:ss GMT 

expires 值应该使用 GMT 格式的时间
var the_date = new Date("December 31, 2020");
var expiresDate = the_date.toGMTString(); //转换成 GMT 格式。编者者: GMT 即格林威治标准时间,现在也称 UTC 即全球标准时间。

在 JS(JavaScript) 中使用 expires 时应该和 cookie 同时写入,如:

document.cookie = "clr=red; expires=" + expiresDate;

而如下写法是不正确的:
document.cookie = "clr=red";
document.cookie = "expires=" + expiresDate;
这样写会形成两个 cookie,第二个 cookie 的名称是 expires,两个 cookie 均没有指定失效日期。

expires 不可读
这就是为什么,我们在 ASP 中使用 response.Write request.cookies("cname").expires 会出错,同样在 JS(JavaScript) 中使用 document.cookie 也不会显示出 expires。

3、expires的有效范围 

Chrome 104版本里,cookie expires 最大不超过400天:

https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis

Safari更严格,根据Safari的ITP2.1(intelligent-tracking-prevention)的规则,通过Javascript的设置的Cookie其最长有效期是七天,如果你设置的时间超过七天,它将自动调整到七天。

不过通过Http的设置的Cookie没有此限制,只要年份不超过9999年,都是可以的。这里说的Http是指浏览器地址栏的URL请求,这种Cookie叫做第一方Cookie。如果是第三方Cookie,则会有种种限制。

4、expires的默认值

如果不设置expires,且也没有设置max-age,Cookie会被认为是Session Cookie,所谓Session就是一次会话,浏览器关闭后该Cookie便会失效,下次打开浏览器后不会再有该Cookie。

5、expires用于删除Cookie 

指定一个比当前时间早的时间就可以删除目标Cookie。一定记得加上和目标Cookie相同的 domain 和 path 属 性。
这里放出Javascript的示例:

document.cookie = 'xyz=aaa; domain=itthink.tech; path=/; expires=' + new Date(Date.now() - 1).toUTCString(); 

# max-age 

1、含义

max-age 定义了一个Cookie在浏览器端保存的秒数,注意是秒,不是毫秒。
该属性名不区分大小写。
和 expires 不同的是, max-age 定义了一个时间段,而 expires 定义的是一个时间点。
如果 max-age 和 expires 同时出现, max-age 的优先级高于 expires , max-age 的值会被浏览器采纳, expires 的值被丢弃。
例如,如果希望Cookie保存一年,可以这样设置: max-age=31536000 , 31536000 是一年的秒数。 

2、格式 

max-age 的值必须是一个整数,当是负数或者0时代表删除目标Cookie 

3、兼容性问题 

IE6、IE7、IE8都不支持 max-age ,所以如果产品的用户群中有这些浏览器的用户,则要考虑是否使用该属性, 毕竟 expires 可以达到一样的效果。

expires 的缺点是,它依赖用户端的时间,如果用户端的时间非常不准确的话,可能会导致和我们的预期不一 致。 

4、用max-age删除Cookie 

当设置成负数或者0时,可以立即删除目标Cookie。 

 参考:

https://www.itpow.com/c/824.asp

https://www.itthink.tech/article/b50332d5-6b2e-403d-aa77-fbd6024aad47/254fec46-ceab-4f36-8ee7-6fd678f31ce1