无连接的HTTP是如何保存业务状态

123 阅读1分钟

大家都知道HTTP/1.1之后是默认长连接的,但是面向请求与响应的HTTP协议何来连接一说?既然没有连接HTTP是如何保存业务的状态呢?


首先我们先要知道HTTP连接指的是什么

长连接与短连接

在设置首部字段 Connection:Keep-Alive 就是长连接了?
从现象来看确实如此
但此连接非HTTP连接,HTTP依旧是具有无状态特性的应用层协议

  • 长连接指的是在同一客户端上的同一浏览器访问同一服务器时,HTTP通信时会复用底层的TCP连接
    在HTTP/1.1之后默认长连接,之所以强调同一浏览器是因为TCP连接是端到端的。不同浏览器的端口不会相同
  • 短连接指的是客户端与服务器的每一次HTTP请求与响应都会建立新的TCP连接
    言此,收信人(响应方)依旧不会知道这个经常写信给自己的是谁(请求方)反之也一样。也许你可能会说信上不是写了名字和地址吗?但这种伪造成本几乎为零,有着严重的安全漏洞

有了上面的铺垫,那收信人是如何判断写信人的身份?

服务端保存业务状态的方式

  • Cookie 服务端回信时写入Cookie让客户端保存起来,让客户端下次写信的时候把cookie带上
  • Session 在服务器上创建Session保存业务状态
    Session保存在服务器中,服务器是如何判断Session与客户端的对应关系?
    • 在Cookie中写入SessionID
    • 在URL路径中带上SessionID