document cookie

# 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

 

posted @ 2023-03-06 11:40  Sameen  阅读(133)  评论(0编辑  收藏  举报