一、基本流程
Cookie
Cookie是浏览器用来保存服务器端数据的一种机制,也就是客户端的存储机制。可以用来存储用户唯一标识,方便服务器端区分不同的用户
(1)浏览器第一次发送请求到服务器端
(2)服务器端以键值对的形式创建Cookie对象,并将Cookie写入到响应头中
(3)浏览器会将响应头中的Cookie信息进行存储
(4)当浏览器再次请求服务器端时,会携带Cookie
Session
Session表示一个会话,它是属于服务器端的一个容器对象,也就是服务器端的存储机制。同样也是方便服务器端区分不同的用户
(1)浏览器第一次发送请求到服务器端
(2)服务器端创建一个Session,同时也会创建一个特殊的Cookie(name=JSESSIONID,value=sessionID),然后服务器端把这个sessionId写入到客户端浏览器的Cookie中
(3)当浏览器再次向请求服务器端时,浏览器会携带有JSESSIONID的Cookie对象
二、实现交互
Http协议本身是一个无状态协议,指的是对事务处理是没有记忆能力,也就是说服务器端并不知道客户端发送过来的每一次的请求,是否是来自同一个用户的,因此加入了Cookie、Session等存储机制的实现,是用来弥补Http无状态的一个不足。
Web = Http协议 + 状态机制 + 其他
结合上述关系,就是在浏览器第一次访问服务器端的时候,服务器端会针对这次请求,创建一个会话,并且生成一个唯一的SessionId,用来标记这个会话;然后服务器端把这个SessionId写入到浏览器的Cookie里面用来实现状态的存储,并再后续的请求里面,每次都会携带SessionId,服务器端就可以根据SeesionId用来识别当前这个会话。
简单来说,就是服务器端可以利用Session来存储客户端在同一个会话里面产生的多次请求的一个记录,然后基于服务器端的Session的存储机制,再结合客户端的Cookie的存储机制,就可以实现一个有状态的Http协议。
总的来说,Cookie是客户端的存储机制,Session是服务器端的存储机制