http 的 cookie 和 session 的区别、实现
# 高度总结性对比
session是一个抽象概念。- 开发者为了实现中断和继续等操作,将
user agent和server之间一对一的交互,抽象为会话,进而衍生出会话状态,也就是session的概念。
- 开发者为了实现中断和继续等操作,将
cookie是一个实际存在的东西。cookie是http协议中定义在header中的字段,可以认为是session的一种后端无状态实现。- 而我们今天常说的
session,是为了绕开cookie的各种限制,通常借助cookie本身和后端存储实现的,一种更高级的会话状态实现。
- 所以
cookie和session,你可以认为是同一层次的概念,也可以认为是不同层次的概念。 - 具体到实现,
session因为依赖session id,通常要借助cookie实现,但这并非必要,只能说是通用性较好的一种实现方案。