HTTP协议与无状态

大家常提起 HTTP 协议是无状态的,其指代的“无状态”是什么?常见的观点有:

  • 无状态代表相同的请求参数总是能返回相同的结果
  • HTTP 本身的设计是无状态的,增加了有状态协议头(Cookie/Session)后变成了有状态协议

对于第一个观点显而易见是错误的,它的表示更倾向于“幂等性”,这往往无法由协议本身保证,还需要服务器进行“有状态”的响应(若服务器不进行状态的持久化,当然无法做到幂等);而第二个观点听起来就靠谱很多,通过 Cookie/Session 进行状态维护从而保证了有状态。但我们可以考虑下 Cookie 或 Session 保证的是谁的状态?一般情况下,它们保证了后端服务器的状态,而非 HTTP 协议的状态。因此对于最初的问题 HTTP 协议的”无状态“,我们是不是应该从协议的本身出发呢?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×