`
lizaochengwen
  • 浏览: 662517 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

各浏览器中cookie个数和大小限制汇总(转)

阅读更多
引用
今天做项目,碰到这样的问题,在网上找了下资料,发现人家总结很不错,就转过来,作为今天的下班心得。


微软表示,Internet Explorer 8增加了每个域可以保存的cookie个数至50个,不过我发现IE7也允许每个域保存50个cookie。当然,这可能是因为一个系统补丁增加的,而不是这个浏览器版本一开始就是这样,但是仍然超过了通常认为是20个的限制。
Firefox允许每个域保存50个cookie。
Opera允许每个域保存50个cookie。

Safari/WebKit是这其中最有趣的,因为它似乎没有明显的限制,一直到 Safari 3.1。我测试了一下设置10,000个cookie,结果它们全部设置成功而且还随着Cookie头部一起发送了。不过问题是,头部的大小超过了限制,导致服务器不能处理,从而发生了错误。

因此,我们以前认为的浏览器限制每个域的cookie数目为20的观点不再正确。另一个有趣的不一致现象是:当设置了太多cookie时,浏览器有什么反应。出来Safari的异常之外,其它的都设置了上限个数的cookie,这里有两种方式:
当cookie数量达到限制以后,最近最少使用算法(LRU)自动踢除最老的cookie,以便可以给最新的cookie腾出空间。Internet Explorer和Opera使用这个方式。
Firefox则有些奇怪:它似乎是随机决定保存cookie,尽管最后一个cookie总是会保存。似乎看不出来它遵循了什么规则。怎么办?(The takeaway? )在Firefox,中,不要从超过cookie的限制。
不同的浏览器之间,cookie的总大小也不尽相同。这一点也比较有一点难以理解,不过这里是我的一些测试结果:
Firefox和Safari允许cookie最长为4097个字符,即cookie的名(name)和值(value)总共可以长达4096个字符,还有一个等号(=)。
Opera则允许cookie最长为4096个字符,包括名(name)、值(value)和等号(=)。
Internet Explorer允许cookie最长为4095个字符,包括名(name)、值(value)和等号(=)。

这里要注意的是,这里的测试都是使用的单字节字符;双字节字符长度将会自然地记为2。在所有的浏览器中,只要长度超过了限制的cookie都将被忽略,并且永远不会被设置。
在做完这些测试以后,我得出的结论是传统的对于cookie的限制(大多是从原始的cookie规范中得来的)的理解不再正确。我们在使用cookie时应该非常谨慎,并始终以最低限度使用。

一、浏览器允许每个域名所包含的cookie数:

  Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。

  Firefox每个域名cookie限制为50个。

  Opera每个域名cookie限制为30个。

  Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。

  注:“每个域名cookie限制为20个”将不再正确!

  二、当很多的cookie被设置,浏览器如何去响应。

  除Safari(可以设置全部cookie,不管数量多少),有两个方法:

  最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。InternetExplorer和Opera使用此方法。

  Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。

  三、不同浏览器间cookie总大小也不同:

  Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。

  Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。

  InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。

注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。
分享到:
评论

相关推荐

    javascript写的操作cookies的函数汇总

    在实际应用中,可能还需要考虑其他因素,如安全性、跨域问题、存储大小限制等。例如,由于浏览器对单个cookie的大小和每个域名下的所有cookie数量有限制,因此在处理大量数据时,可能需要使用其他存储机制,如...

    cookies做的购物车

    6. **结算过程**:在用户准备结账时,ASP将购物车中的所有商品信息汇总,可能还需要与数据库交互以获取库存和价格信息,然后引导用户进入支付流程。 7. **会话管理**:除了使用Cookies,也可以结合Session进行会话...

    腾讯校园招聘历年经典面试题汇总:前端岗1

    Cookie主要用于跟踪用户状态、存储用户偏好等,但大小有限制且存在跨域安全问题。 (17)、性能优化? 性能优化可以从多个方面入手,如减少HTTP请求、压缩代码和图片、利用CDN加速、启用HTTP2、缓存策略优化、代码...

    ASP.NET页面传值汇总

    尽管Cookies提供了跨页面传递信息的能力,但并非所有浏览器都支持,且存在大小和数量限制。 3. Session变量 Session变量是在服务器端存储的,它们在用户的会话期间保持有效,直到用户关闭浏览器或会话超时。在源...

    php面试题汇总-121617591

    每个Cookie的大小限制约为4KB,且存在数量限制。Cookie的生命周期由服务器设定,但用户也可以手动清除。 3. **数据库中的事务** 事务是数据库操作的基本单位,它保证了一组操作的原子性、一致性、隔离性和持久性...

    常见的前端开发面试题附答案经典精选汇总大全.docx

    大小限制:每个 cookie 最大约 4KB。 d. 安全隐患:cookie 易被拦截,可能导致 session 信息泄露。 6. **浏览器本地存储** - **sessionStorage**:只在同源同会话间可用,会话结束后数据自动清除。 - **...

    WEB阶段面试题汇总(精华版).pdf

    ### WEB阶段面试题汇总(精华版)知识点梳理 #### 一、Servlet调用过程与数据库连接池 **1.1.1. Servlet调用过程** - **加载**: 当客户端首次请求一个Servlet时,Web容器(如Tomcat)会加载该Servlet类。 - **...

    php中高级常用面试题,php中高级常用知识点面试题

    3. **存储大小**:Cookie受浏览器限制,一般每个域名下最多允许20个Cookie,每个不超过4KB;Session则不受此限制。 4. **安全性**:Cookie数据容易被篡改,通常需要加盐处理;Session依赖于Cookie传输session_id,也...

    js常见经典面试题汇总

    - **Cookie**:通常用来保存登录状态等信息,大小限制为4KB左右,每次HTTP请求都会携带Cookie信息。 #### 15. 判断数据类型的方式以及区别 - **typeof**:返回一个表示变量类型的字符串,但不能准确判断引用类型。...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例156 限制多行文本域输入的字符个数 187 实例157 设置文本框的只读属性 188 实例158 自动计算金额 189 实例159 为文本框设置默认值 190 实例160 设置文本框的样式 191 实例161 文本域的滚动条 192 3.3 下拉列表的...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例156 限制多行文本域输入的字符个数 187 实例157 设置文本框的只读属性 188 实例158 自动计算金额 189 实例159 为文本框设置默认值 190 实例160 设置文本框的样式 191 实例161 文本域的滚动条 192 3.3 下拉列表的...

    PHP面试题汇总附答案

    - **COOKIE**:在客户端浏览器保存数据的一种方式,可以通过设置过期时间和安全性等参数来管理。 - **SESSION**:在服务器端保存用户会话信息的方式,每个用户的会话数据独立存储,不受客户端浏览器的影响。 #### 3...

    2021-2022计算机二级等级考试试题及答案No.2649.docx

    4. **字段大小属性**:在数据库中,文本类型的字段可以设置“字段大小”,以限制该字段可容纳的最大字符数。 5. **网址分类**:网址www.stats.gov通常代表政府机构,而不是商业部门。 6. **顺序查找**:在最坏的...

    Java面试题.docx

    - 单个Cookie的数据大小限制为4KB。 - 一个服务器可以向一个浏览器保存最多20个Cookie。 - 大多数浏览器最多可以保存300个Cookie。 #### 八、线程创建方式 **四种常见创建线程的方式:** 1. **继承Thread类**:...

    Java后端技术面试基础汇总

    ### Java后端技术面试基础汇总 #### 一、Java基础知识 **1.1 Java基础** - **面向对象的特征:** - 继承:子类可以继承父类的属性和方法。 - 封装:将数据和行为封装在一起,提高数据安全性。 - 多态:同一...

    C#实现.net页面之间传值传参方法汇总

    在.NET框架中,C#语言提供了多种在页面之间传递值和参数的方法。这些方法在开发Web应用程序时非常关键,因为它们允许数据在用户浏览不同页面时保持连贯性。以下是对几种常见方法的详细说明: 1. **QueryString传值*...

    Java后端技术面试汇总-2019

    ### Java后端技术面试知识点汇总 #### 一、Java基础篇 **1.1 Java基础** - **面向对象的特征**:面向对象编程的核心特征包括继承、封装和多态。 - **继承**:允许一个类继承另一个类的属性和方法。 - **封装**...

Global site tag (gtag.js) - Google Analytics