Cookie
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户的状态,就向客户端浏览器颁发一个Cookie
客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器就把请求到的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态
Cookie的工作原理:
Session
Session是另一种记录客户状态的机制,保存在服务器上。客户端浏览器访问服务器的时候,服务器
把客户端信息已某种形式记录在服务器上
客户端浏览器再次访问时只需从该Session中查找该客户的状态就行了
Session的工作原理:
如果说Cookie机制是通过检查客户端身上的通行证,来确定客户身份;那么Session就是通过检查服务器上的客户明细表来确认客户身份
保存Session ID的方式
Cookie
URL重写:就是将Session ID直接附加在URL后面,作为URL的附加信息
隐藏表单:服务器会自动修改表单,添加一个隐藏的字段以便表单提交的时候能够将Session ID传递到服务端上
Session的有效期
- Session超时失效
- 程序调用HttpSession.invalidate()
- 服务器进程被停止
Cookie与Session的区别
存放位置不同:Cookie存储在客户端;Session保存在服务端
安全性(隐私策略)不同:Cookie存储在浏览器里,对客户端可见,客户端的一些程序可能会窥探会复制甚至修改Cookie里面的内容;Session存储在服务器里,对于客户端而言是透明的,不存在敏感信息泄露的风险
有效期不同:可以设置Cookie的过期属性为一个很大的值,那么Cookie就可以在浏览器里保存很久很久;服务器端会定时的清除超时的Session ID,避免出现过大的压力
对服务器造成的压力不同:Session保存在服务器端,每个用户都会产生一个Session,如果并发的用户很多,那么则会耗费大量的内存;Cookie保存在客户端,不太会占用服务器