• 各浏览器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一些空间。Internet Explorer和Opera使用此方法。

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

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

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

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

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

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

    四、cookie的name个数/最大容量限制测试

    for(var ii = 0; ii< 5000;ii++){ 
    if (!window.ia) window.ia=0; 
    window.ia++; 
    var s = 'a'+window.ia+'='; 
    for (var i = 0; i < 4000;i++) s+='' +parseInt(Math.random()*10); 
    s+= ';'; 
    //alert(s.length);  
    document.cookie =  s; 
    } 
     
    for(var ii = 0; ii< 5000;ii++){
    if (!window.ia) window.ia=0;
    window.ia++;
    var s = 'a'+window.ia+'=';
    for (var i = 0; i < 4000;i++) s+='' +parseInt(Math.random()*10);
    s+= ';';
    //alert(s.length);
    document.cookie =  s;
    }

    经过测试(ie10,firefox22,chrome)

    各浏览器的cookie每一个name=value的value值大概在4k;所以4k并不是一个域名下所有的cookie共享的,而是一个name的大小;

      而对于name的个数的限制,发现ie10大概是50个,如果超过了50个最前面设置的就会挨删除把新的放进去。

      而对于限制4k大小的限制时,保存cookie的请求就直接的被忽略,没有任何效果

     

  • 相关阅读:
    OWIN系列之自己动手编写中间件
    Visual Studio2015使用tinyfox2.x作为Owin Host调试教程
    CentOS7下自定义目录安装mono+jexus教程
    TinyFox/Jexus如何正确使用配置文件
    CentOS7下默认目录安装mono+jexus教程
    CentOS 7 常用命令
    javascript动态创建script,并监听onload、onerror
    javascript if
    StackExchange.Redis常用API
    EF EntityState的几种状态
  • 原文地址:https://www.cnblogs.com/jing-tian/p/11002411.html
Copyright © 2020-2023  润新知