Cookie和Session是会话跟踪技术。
1、什么是Cookie?
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,使用response向客户端浏览器发一个Cookie。客户端浏览器把Cookie存起来,再次请求服务器时,将Cookie和数据一起发给服务器,服务器根据从Cookie来识别用户状态。使用key-value的形式保存用户状态。
2、什么是Session?
客户端浏览器访问服务器时,服务器把客户信息以某种形式记录在服务器上,客户浏览器再次访问时,只需从该Session中查找用户状态。
3、二者的区别
(1)存取方式:Cookie只能保存ASCII字符串,如需保存Unicode字符或二进制数据,需要进行编码,也不能直接存取Java对象。
Session可以存取任何类型的数据,可以看做是一个Java容器类。
(2)隐私安全:Cookie存在浏览器上,对客户端是可见的,存在安全隐患。而Session存在服务器上,对客户端是透明的,不存在信息泄露的风险。
(3)有效期:Cookie将maxAge设置为Integer.MAX_VALUE可以实现登录信息长期有效,而Session依赖JSESSIONID的Cookie,他的maxAge默认为-1,只要关闭浏览器就会失效。
(4)对服务器的负担:Session存在服务器上,每个用户都有一个Session,如果并发访问用户过多,会消耗大量的内存。Cookie存在客户端,不占用服务器资源,不会出现这样的we问题。
(5)浏览器的支持:Cookie需要浏览器支持,如果客户端不支持或禁用了Cookie,则Cookie就会失效。
(6)跨域名:Cookie支持跨域名访问。Session不支持跨域访问
参考资料:王者归来