它山之石可以攻玉

键盘上的生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

测试 Cookie在不同浏览器内容长度限制的测试

Posted on 2012-10-08 16:52  陈达辉  阅读(852)  评论(0编辑  收藏  举报

(1) 当前页面未设置同名的情况;(转)

(2) 当前页面已设置同名cookie的情况;
    主要测试代码如下:
//超过4k的一个超长字符串

var longstring='dfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfs

afdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfs

afdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsaf

dfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdf

safdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfs

afdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsaf

dsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafd

fsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsa

fdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdf

safdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfs

afdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafd

safdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdf

safdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsaf

dfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsaf

dfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsaf

dsafdfsa

fdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsa

fdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsaf

dfsafdsafdfsafdsafdfsafdsafdfsafdsafddfsafdsafdfsafdsafdfsafdsafdfsafdsafdf

;


//写cookie函数


function setcookie(name,value)
{
   var days = 1; //此 cookie 将被保存 1 天
   var exp  = new date();  
   exp.settime(exp.gettime() + days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.togmtstring();
}

function getcookie(name)//取cookies函数
{
   var arr = document.cookie.match(new regexp("(^| )"+name+"=([^;]*)(;|$)"));
   if(arr != null) return unescape(arr[2]); return null;
}

//设置cookie,此处包含文章开头提到的两种情况:
setcookie('test','已经设置的cookie');

//设置超长cookie: 
setcookie('test',longstring);

alert(getcookie('test'));

测试结果如下:

 (1) 当前页面未设置同名cookie的情况;


  

 浏览器版本
 输出结果
 ie6
 null
 ie7
 null
ie8
 null
 firefox
 null
 chrome
 null
 opera
 null
结论:
在以上各版本浏览器中写入超过4kb(当然各浏览器情况可能不同,有的是4095字节,有的是4096字节)字符串时会出现无法写入的情况,
并不能实现截断写入的情况。
(2) 当前页面已设置同名cookie的情况;  
 浏览器版本
 输出结果
 ie6
  null
 ie7
  null
 ie8
 已经设置的cookie
 firefox
 已经设置的cookie
 chrome
 已经设置的cookie
 opera
 已经设置的cookie
结论:
在以上各版本浏览器中当已经存在键名为 'test' 的值时,写入超过4kb(当然各浏览器情况可能不同,有的是4095字节,有的是4096字节)字符串时:
 1. 在ie6与ie7下,当无法写入超长字符串时,会影响原有键名为'test'的cookie值,在测试结果中可以看到此cookie值已经被清除;
 2. 而在其他浏览器中,当无法写入超长字符串时,并不会影响到原有同键名的cookie值,原有cookie值依然可以正常读取。