Cookie 是 浏览器端存储的小文本信息,用于在客户端和服务器之间保存状态。
特点:
- 存在于浏览器端,每个请求可以自动携带cookie到服务器(除非跨域未携带cookie)
- 存储量小(一般4kb左右)
- 可以设置过期时间(如果不设置过期时间,cookie会在浏览器关闭后消失,这种cookie称为会话cookie,存放于内存;如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间)
- 可以跨请求保持用户状态。
- cookie保存sessionId,浏览器不直接存session内容
Session 是 服务器端保存的状态信息,用来记录用户的登录状态或其他临时数据。
特点:
-
存储在服务器端,安全性高
-
每个 session 通常对应一个唯一的
sessionId -
session 通过 cookie 或 URL 参数让浏览器识别
工作流程:
-
用户第一次访问服务器
-
服务器创建一个
HttpSession对象,生成sessionId -
服务器通过响应头
Set-Cookie: JSESSIONID=xxxx发送给浏览器 -
浏览器保存 cookie,每次请求自动带上
JSESSIONID -
服务器根据
sessionId找到对应的 session,对应用户状态
Cookie + Session 结合 → 能让服务端知道“这个请求是谁发来的”,同时保持状态