Session
HTTP协议是无状态的,session(会话)是客户端与服务器之间保持状态的解决方案。
-
客户端发送用户名和密码到服务器。
-
服务器收到请求,身份验证通过后,创建一个session,将sessionID以cookie的形式返回给客户端。
-
客户端后续发起的请求,浏览器都会自动带上cookie中的sessionID。
-
服务器收到请求,根据sessionID读取session数据。
Cookie 是网页浏览器用来保存用户信息的文件。
Session 数据保存在服务器。PHP session 保存到临时文件,Java session 保存在内存中。
如果浏览器禁用了cookie,可以通过URL重写的方式发送到服务器。
session 产生的问题?
(1)无法避免 CSRF (跨站请求伪造)攻击。
(2)服务器集群,session 无法共享。
可以采用 JWT 解决方案,在服务器上不存储session数据。