Session与Cookie的区别(学习笔记一)
一、存储位置不同
1.Cookie的数据信息存放在客户端浏览器上。
2.Session的数据信息存放在服务器上。
二、存储容量不同
1.单个Cookie保存的数据<=4kb,一个站点最多保存20个Cookie。
2.对于Session并没有上限,但出于对服务器端的性能考虑,Session内不能存放过多的东西,并且设置Session删除机制。
三、存取方式的不同
1.Cookie中只能保管ASCII,需要通过编码的方式存取Unicode字符或者二进制数据。运用Cookie难以实现存储略微复杂的信息。
2.Session中能够存取任何类型的数据,包括不限于String、Integer、List、Map等
四、隐私策略的不同
1.Cookie对客户端是可见的,别有用心的人可以分析c存放在本地的Cookie并进行Cookie欺骗。所有他不是安全的。
2.Session存储在服务器上,对客户端是透明的,不能存在敏感信息泄露的风险。
如果选用Cookie,比较好的方法是:敏感的信息,如账号密码等,尽量不要写到Cookie中。可以将Cookie信息加密。提交到服务器后再进行解密。存储本地的Cookie就不需要自行加密。
五、有效期上的不同
1.开发可以设置Cook的属性,达到使Cookie长期有效的效果。
2.由于Session依赖于名为jsessionid的Cookie,而Cookie jsessionid的过期时间默认为-1,只需关闭窗口该Session就会失败,因而session不能达到长期有效的效果。就算不依赖于Cookie,运用URL地址重写也不能完成,假如设置session的超时时间过长,服务器累计的session就会越多,越容易导致内存溢出。
六、服务器压力的不同
1.Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。
2.Cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,Cookie是很好的选择。
七、浏览器支持的不同g
如果客 户端不支持Cookie
1.cookie是需要客户端浏览器支持的。假如客户端禁用了Cookie,或者不支持Cookie,则会话跟踪失效。关于wap上的应用,常规cookie就没有用了。
2.运用session只能在本窗口内有效。假如两个浏览器窗口互不相干,他们将运用两个不同的Session。(IE8不同窗口session想干)
八、跨域支持上的不同
1.Cookie支持跨域名访问,例如domain属性设置为“.51testing.com”,则以“.51testing.com”为后缀的一切域名均能够访问该cookie。
2.session不会支持跨域名访问。session仅在它所在的域名内有效。