Cookie  Session 文章目录一、背景二、Cookie三、Session(会话)一、背景HTTP是无状态的。用户登陆网页访问服务器登陆成功后关闭网页再次打开网页访问服务器此时仍然需要登录。简单的做法是可以让浏览器记住用户名和密码登陆时进行自动填充不过有风险比如电脑被黑(不过像我这种人畜无害的黑客估计也盯不上我)但是这样退出网页后还是得登陆。因此关键的还是要处理HTTP无状态的问题。即浏览器要在登陆成功后发起的每次HTTP请求携带用户登陆状态。这里用到的技术就是Cookie。二、CookieCookie一般存储在浏览器的客户端。把用户名密码存储在Cookie登录后每次发起请求都把Cookie加到请求头交给服务端验证登录。但将用户名密码都保存在浏览器Cookie里是有风险的例如请求被截导致泄露因此引入Session。三、Session(会话)Session一般存储在服务器内存。用户登陆成功后服务器会生成一个Session将用户信息存储到Attribute(就是一个map结构可自行查看源码)服务器返回响应携带Set-Cookie属性来让前端设置Cookie比如Session ID、Cookie过期时间等字段。之后前端发起的请求都会携带Cookie后端根据请求中Cookie的Session ID获取Session若获取失败直接返回未登录若获取成功则再从Session中的Attribute获取用户信息若结果为空则直接返回未登录若结果不为空表明已登录服务器会继续执行处理请求逻辑。总结Cookie保存在浏览器的客户端。没设置过期时间则存储在浏览器内存浏览器关了就没了若加了过期时间存储在客户端硬盘重新打开浏览器依旧存在。一般存储Session ID和Cookie过期时间等。Session保存在服务器内存。一般存储用户信息。随着服务关闭/重启会清除或者随着会话过期清除或者业务逻辑主动删除(比如退出登录等)。