V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
EXDestroyer
V2EX  ›  JavaScript

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

  •  
  •   EXDestroyer · 2017-06-07 09:22:32 +08:00 · 3377 次点击
    这是一个创建于 2726 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2017-06-07 14:56:29 +08:00
    viko16
        1
    viko16  
       2017-06-07 09:46:45 +08:00
    容量上限按每个域来算

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

    建议重新设计一下.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:06 · PVG 05:06 · LAX 13:06 · JFK 16:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.