1、存取方式的不同
- Cookie中只能保管ASCII字符串,假如需要存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比较艰难的。
- Session中能够存取任何类型的数据,包括不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类、对象等,运用起来十分便当。能够把Session看做是一个Java容器类。
2、隐私策略的不同
- Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。
- Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
3、有效期上的不同
- Cookie的过期时间可指定。
- Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只要关闭了浏览器该Session就会失效,因而Session不能完成信息永久有效的效果。
4、服务器压力的不同
- Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。关于Google、Baidu、Sina来说,Cookie或许是唯一的选择。
- Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。
5、浏览器支持的不同
- Cookie是需要客户端浏览器支持的。
- 假如客户端浏览器不支持Cookie,需要运用Session以及URL地址重写。
6、跨域支持上的不同
- Cookie支持跨域名访问,例如将domain属性设置为“baidu.com”,则以“baidu.com”为后缀的一切域名均能够访问该Cookie。
- Session则不会支持跨域名访问。Session仅在它所在的域名内有效。