关于不同浏览器下Cookie内容长度限制的测试
由于项目的需要,进行一个COOKIE内容长度的限制测试,作一个记录供参考,测试设计如下,分两种情况:
(1) 当前页面未设置同名Cookie的情况;
(2) 当前页面已设置同名Cookie的情况;
主要测试代码如下:
//超过4K的一个超长字符串
var longString='dfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafddfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsafdfsafdsaffsafdsafdfsafdsafbug';
//写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值依然可以正常读取。
仅供参考,希望对大家有帮助。
推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架