Session 与Cookie
2025年4月17日大约 1 分钟
Session 与Cookie
Cookie
- 可以设置过期时间,如果不设置,浏览器关闭即失效(称为会话 Cookie)。
- Cookie的值直接存储在浏览器中
Session
- 会在第一次请求发送时生成一个Session会话,后续请求都使用该Session会话,除非会话结束。
- session的值是存储到服务器中,浏览器中通过cookie存储的session只是该session会话的session id标识
例如:在浏览器第一次发起请求时生成Session,之后发起的请求都使用该Session会话。除非过期时间导致该Session导致失效。
Session与Cookie的合作
浏览器无法直接保存Session,即要通过Cookie保存SessionID,来“间接地”访问服务器上的 Session。
- 服务器生成 Session ID(比如 abc123)
- 服务器响应头加上:Set-Cookie: JSESSIONID=abc123
- 浏览器收到Session后自动存储在 Cookie 中
- 后续请求时,浏览器请求头会自动带上:Cookie: JSESSIONID=abc123
- 服务器收到请求后,根据Cookie 中的 JSESSIONID 查找对应的 Session 对象,以此判断用户状态是否有效(如是否已登录、是否有权限等)
扩展--请求头与响应头
- 请求头(发起请求,携带请求信息),客户端(浏览器)向服务器发起请求。
- 响应头(返回响应消息),服务器向浏览器返回响应信息。