cookie 和session 的区别
之前没有用过session,只用过HTML5中localStorage(以前总结过sessionStorage 、localStorage和cookies的区别);刚开始我以为session和sessionStorage是同一个东西。。。
它们的区别:
1、存储位置:
cookie数据存放在浏览器上,session数据存放在服务器上;
2、安全性
cookie相对来说没有session安全,因为别人可以通过分析cookie来进行cookie欺骗;(当然我们可以加密解密cookie)因此一般情况下登录等重要信息应采用session;
3、性能
session会在一定时间内保存在服务器上,因此当访问增大时,会影响服务器的性能,而cookie则不存在该情况;
4、大小限制
cookie有大小限制(不能超过4k),很多浏览器会限制一个站点最多保存20个cookie,而session的大小则只以硬件为限制;
5、存取方式
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。
而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。
6、跨域支持
Cookie支持部分跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。
7、生命周期
(以20分钟为例)
(1)cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,
(2)session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁
但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期
(3)关机会造成session生命周期的结束,但是对cookie没有影响
参考资料:
1、 cookie 和session 的区别详解
2、Cookie与Session的区别与联系及生命周期
3、Cookie与Session的区别