面试时候经常会被问及 Cookie 大小限制,但一直没尝试写一些 demo 测试下溢出极限值会怎样~~
本文就来看看各种极限情况!
英文
测试代码:- (() => {
- const maxSize = 4 * 1024; // 4KB
- const name = 'name'
- // 最大出入的 value 长度
- const maxValueStr = 'a'.repeat(maxSize - name.length);
- // firefox 不能使用 Secure
- document.cookie = `${name}=${encodeURIComponent(maxValueStr)};expires=${new Date(2026, 0, 1).toUTCString()};path=/`;
- })()
复制代码 Chrome/Edge/Firefox 浏览器
英文:名字 + 内容 字符串长度限制 4096 字符。
各家浏览器的存储面板都能看到 Cookie 大小,此大小包含存入 Cookie 的名字和内容加在一起的长度。
不同之处
Chrome/Edge
超过 4KB 大小无法存储,浏览器无报错,也无提示,纯粹毫无感知。
Firefox
超过 4KB 大小会有提示:- Cookie “name”太大而无效。最大大小为 4096 字节。
复制代码 比如这段代码存入 cookie 的值超过一个字符:
[code](() => { const maxSize = 4 * 1024 - 5; // 4KB const maxStr = 'a'.repeat(maxSize) + 'b1'; console.log('
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |