Session与Cookie的区别
Session与Cookie的区别
1. 存储位置不同
- Cookie的数据信息存放在浏览器(客户端)上。
- Session的数据信息存放在服务器上。
2. 存储容量不同
- 单个Cookie保存的数据≤4KB,一个站点最多保存20个Cookie。
- 对于Session并没有上限,但出于对服务器的性能考虑,Session内不要存放过多的东西,并且是指Session删除机制。
3. 存取方式的不同
- Cookie中只能保管ASCII字符串,需要通过编码的方式存取Unicode字符或者二进制数据。运用Cookie难以实现存储略为复杂的信息。
- Session中能够存取任何类型的数据,包括但不限于String、Integer、List、Map等。
4. 隐私策略的不同
- Cookie对浏览器(客户端)是可见的,别有用心的人可以分析存放在本地的Cookie并进行Cookie欺骗,所以它是不安全的。
- Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
假如选用Cookie,比较好的方法是:敏感的信息,如账号密码等,尽量不要写到Cookie中。可以将Cookie信息加密,提交到服务器后再进行解密。存储在本地的Cookie就需要自行加密了。
5. 有效期上的不同
- 开发可以通过设置Cookie的属性,达到使Cookie长期有效的效果。(测试人员可以通过对浏览器的设置修改Cookie的生命周期)
- 由于Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该Session就会失效,因而Session不能达到长期有效的效果。就算不依赖于Cookie,运用URL地址重写也不能完成,因为假如设置Session的超时时间过长,服务器累积的Session就会越多,越容易导致内存溢出。
6. 服务器的压力不同
- Cookie保管在浏览器(客户端),不占用服务器资源。对于并发用户十分多的网站,Cookie是很好的选择。
- Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。
7.浏览器支持的不同
假如浏览器(客户端)不支持Cookie。
- Cookie是需要浏览器(客户端)支持的。假如客户端禁用了Cookie,或者不支持Cookie,则会话跟踪会失效。关于WAP上的应用,常规的Cookie就派不上用场了。
- 运用Session需要使用URL地址重写的方式。一切用到Session程序的URL都要进行URL地址重写,否则Session会话跟踪还会失效。关于WAP应用来说,Session+URL得知重写或许是它唯一的选择。
假如浏览器(客户端)支持Cookie。
- Cookie既能够设为本浏览器窗口以及子窗口内有效(把过期时间设为-1),也能够设为一切窗口内有效(把过期时间设为某个大于0的整数)。
- Session只能在本窗口以及其子窗口内有效。假如两个浏览器窗口互不相干,它们将运用两个不同的Session。(IE8下不同窗口Session相干。)
8.跨域支持上的不同
- Cookie支持跨域名访问,例如,将domain属性设置为 “.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如,Google、Baidu、Sina等。
- Session则不会支持跨域名访问。Session仅在它所在的域名内有效。