Session:因为http协议本身是无状态的,但是往往网站的业务又需要维护用户状态信息。那么session是用来在服务器端为一个固定用户的一个会话创建一个sessionid。通过这个session在服务器端和客户端之间的传递来维持会话。Session的失效的情况有:超过一定时间服务器端没有接收到请求(tomcat默认是30分钟),或者客户端的浏览器实例关闭。
既然是维持会话状态,那一定客户端也要维持这个sessionid,这里就用到了cookies。而且这个cookies往往是没有过期时间的,所以不会持久化到磁盘,而是存放在内存中,就由浏览器实例来管理。客户端发送请求的时候,所谓的SESSINOID参数有正是在cookies这个头里面的。
以上是session和cookies的关系。
但是cookie的功能又不完全是为了配合session的。很多网站会利用cookies做很多的业务,比如购物车,个人喜好等。往往这些cookies有一定的过期时间,所以必须要保存在磁盘中去,其实想想服务器端一定也会持久化这些信息,才能达到两者之间的交互。