Cookie
Cookie是作用于客户端的会话状态的一种存储机制,是服务器在本地机器上存储的小段文本或者是内存中的一段数据,并随每一个请求发送至同一个服务器。
Session
Session是作用于服务器端的信息管理机制。
过程:当客户端向服务器端发送一个请求,要求服务器端产生一个Session时,服务器端会先检查其发过来的Cookie中是否含有session-id,是否有效,如果含有session-id且有效的话,Session首先会检索自己的“客户明细表”,如果表里面有同样的session-id的话,就会根据session-id检索除来对应的session,如果没有的话,服务器端就会建立一个新的session。
安全性
session一般要比Cookie安全性高,cookie中包含session-id,如果想要获取到session,首先必须攻破cookie获取到其中的session-id,其后还要启动session-start来从服务器获取对应的session。由于session-id是加密的,所以很难被攻破,而且session是针对某一次通信而言的,随着会话的结束,session-id也就失效了,并且同一客户端启动二次session_start的话,session_id是不一样的。
session失效的方法
1.关闭tomcat 2.重启应用 3.过期的Session 4.无效的session
区别
区别 | Cookie | Session |
---|---|---|
作用对象 | 客户端 | 服务端 |
机制 | 检查客户身上的“通行证” | 检查服务器上的“客户明细表” |
存取方式 | 只能ASCII | 任意类型的数据 |
生命周期 | 20分钟,累加的,从开始计时 | |
有效期 | 长时间保存(记住密码登录) | 有效期较短,随着客户端的关闭而失效 |
网络传输量 | 有(从客户端传给服务器端) | 无(本身就存在于服务器端) |
安全性 | 低,容易被窃取 | 高 |
大小 | 最大不能超过4K | 远高于Cookie |
访问范围 | 多个浏览器共享的 | 一个用户浏览器独享 |
注:虽然Cookie中保存着Session-id,但是当cookie被禁止的时候,Session依旧是可以用的,客户端端依旧可以通过url等方式向服务器端提交客户端此时的状态,获取到对应的session