如何较好地获取浏览器 cookie 剩余容量大小并解决容量不足的问题?

2017-06-07 09:22:32 +08:00
 EXDestroyer

我们知道浏览器本身 cookie 所能存储的大小有限,如果已超出最大容量,就无法继续设置 cookie,开发的时候如何确保剩余容量足够? 另外,假设用户访问了某个网站将其 cookie 写满,是否意味着后面访问的网站都无法正常设置 cookie? 有一种说法是用 document.cookie 获取长度计算字节,但是 document.cookie 正常情况是拿不到别的域名 /网站设置的 cookie 的吧,这样计算真的有效? 当然也可以 采用 localstorage/sessionstorage 之类的替代方案,但是感觉并不完全适用所有场景,例如 ls/ss 本身也有大小限制,是否也要考虑同样问题?并且他们不能设置有效期,也不会带到 http 请求头中去(有时候需要把 cookie 发送给服务端)。 那么怎样才能最好地解决这类问题?

3406 次点击
所在节点    JavaScript
13 条回复
viko16
2017-06-07 09:46:45 +08:00
容量上限按每个域来算

http://www.ietf.org/rfc/rfc2965.txt
SourceMan
2017-06-07 09:50:18 +08:00
如果塞满了 cookies,那么没个请求都携带所有的 cookie,不得爆了?
EXDestroyer
2017-06-07 09:51:29 +08:00
@viko16 所以不同域之间的 cookie 不会影响各自 cookie 的设置?
jugelizi
2017-06-07 10:52:46 +08:00
。。。。瞎操心
你的项目多大把 cookie 用满了
EXDestroyer
2017-06-07 10:57:24 +08:00
@jugelizi 不是,是因为有一组 json 序列化以后比较长,有时候会设置失败
reus
2017-06-07 11:04:15 +08:00
cookie 就是 cookie,不要做成满汉全席
EXDestroyer
2017-06-07 11:08:19 +08:00
@reus 我之前一直有个疑问,所谓的 cookie 只有 4k 大小,是指单个域名还是浏览器本身?
如果是后者,别的网站所设置的 cookie 会不会导致容量被占据?
sneezry
2017-06-07 11:10:38 +08:00
@EXDestroyer 大量数据存 localStorage 吧,那个 json 需要每个请求都带着么
firefox12
2017-06-07 11:17:32 +08:00
你理解错误,每个网站都是自己的 cookie, 如果一个网站可以让其他网站都无法使用 cookie 那设计浏览器的设计师都可以下岗了。
learnshare
2017-06-07 11:21:51 +08:00
sxlzll
2017-06-07 12:22:27 +08:00
1、去看下标准,起码看下 MDN
2、不要滥用
sneezry
2017-06-07 13:19:53 +08:00
@learnshare 看大量有多大吧,对于一个 json,localStorage 够用了。其他很多存储方法没有进 w3 的确认方案
meepo3927
2017-06-07 14:56:29 +08:00
什么功能要在 cookie 中携带大量信息?

建议重新设计一下.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/366527

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX