最近在使用cookie做功能,现在随便来简单总结一下cookie。
cookie是什么?
在我理解它就是一段文本,什么文本呢?
- 以名/值作为存储结构
- 以;作为分割
- 以expires作为有效期
- 默认path为/同时也可以自定义,可以允许有同名的cookie但path就不能在同一path下,而且会优先于当前的文档
- 具备主子键:我理解为类似二维数组结构一样
- 主键的cookie的数量是有限的
注意事项
- 要确保主键是唯一的,下面的例子我就用userid和flag作为唯一主键
- 有效期以毫秒为单位
- 以escape 方法对字符串进行编码,解决中文乱码的问题
- 以正则表达式匹配cookie
- 以unescape方法解码
- cookie不能直接删除,只有通过创建新的cookie,内容不变,有效期设置当前时间的前一秒
js 操作cookie
//设置Cookie
function setCookie(userId,value,flag){
var Days = 36135;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = userId +flag + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
//获取Cookie
function getCookie(userId,flag){
var arr,reg=new RegExp("(^| )"+userId+flag+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
//删除Cookie
function delCookie(userId,flag){
var exp = new Date();
exp.setTime(exp.getTime()-1);
var value=getCookie(userId,flag);
if(value!=null)
document.cookie = userId + flag+ "="+ escape (value) + ";expires=" + exp.toGMTString();
}
补充
- 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。所以不能什么东东都往cookie里放,同理session也一样,一般也只放用户的登录信息
- cookie存储的位置是客户端浏览器
- session存储的位置是服务器
- cookie不是很安全,他人分析存放在本地的cookie并进行cookie欺骗
- session 的运行依赖 session id 也就是唯一标识
结束语
由于个人的水平这里只能作为简单的参照,如有了解更深的需要看大神们的文章了!这段时间做了这个列表自定义的功能让对cookie有了更深的了解,以后也会继续深入学习。同时也希望大家给点学习建议,大家互相交流沟通!在此先谢谢了!