-
HTTP的基本性质
- HTTP是简单的
- HTTP是可扩展的:HTTP headers让协议的扩展变得容易
- HTTP是无状态的,有会话的:这意味着服务器不能记住之前的请求或连接状态。每个HTTP请求都是独立的,服务器无法识别该请求是否来自同一个客户端或与之前的请求有关。
-
Cookie
- 由服务器发送到浏览器,并保存在浏览器端的一小块数据;
- 浏览器下次访问该服务器时候,会自动携带该数据块,将其发送给服务器;
- 如果设置了cookie的生存时间,cookie就会被保存到本地;如果没设置就会随着浏览器关闭消亡
-
Session
- 存储在服务器端;
- 可存储的数据块量更大;
- 敏感信息存放在服务器更加安全;
- 但会增加服务端的内存压力。
-
为什么现在常用Cookie,而Session用的少了?
- 在分布式服务器情况下,浏览器发送请求,服务器1比较空闲,服务器1为其创建了唯一的标识符sessionID,并将其通过cookie将sessionID发送给客户端;
- 客户端随后发送sessionID访问服务器上的会话数据时,可能会将请求发送给服务器3;
- 因此需要额外的session维护机制:
- 粘性session:每次都用固定的一台服务器来处理,会破坏负载均衡;
- 同步session:将session同步给所有的服务器,导致各服务器之间会产生耦合,降低性能;
- 共享session:单独设立一台用于会话保持的服务器,将所有session保存在该服务器上,导致对该服务器的依赖性很强;