HTTP是无状态的,那么保持活着意味着什么呢?

ker*_*ern 14 http-proxy http-headers

Keep-Alive: 300
Proxy-Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

正如我们所知,当请求得到响应时,HTTP连接已关闭,那么它是什么意思keep-alive,有人可以详细说明吗?

Kri*_*ris 12

这意味着可以保持连接打开以请求更多资源,例如图像和样式表.

  • 不,HTTP确实是无国籍的.这意味着服务器返回的数据不依赖于用户先前的任何操作.Cookie和其他非HTTP方法使网络看起来是有状态的,使用户能够在网站上登录和退出.在这个意义上的状态与连接无关. (4认同)
  • 所以说"HTTP是无状态"是错误的,在这种情况下它可以是状态满的,对吧? (2认同)

spe*_*der 6

我们知道在请求得到响应时HTTP连接已关闭

什么是HTTP连接?实际上,它是一个实现HTTP的套接字连接.只有在HTTP1.0中,连接才会在每次响应后关闭.为了节省设置TCP/IP连接的成本,HTTP1.1指定除非客户端发送标头

Connection:close
Run Code Online (Sandbox Code Playgroud)

或者服务器返回相同的标题,然后套接字保持打开状态.您可以根据需要向此套接字提供任意数量的请求,并且响应将按照请求的顺序返回.这要求响应以分块传输编码发送或包含内容长度报头,以便可以检测/计算每个响应的结束.

proxy-connection头又有所不同,并且仅涉及客户端和代理服务器之间的对话.

我推荐这个页面作为协议的优秀指南.

HTTP变得非常容易


Pra*_*hra 5

这个问题已经被回答并接受了,但我想详细解释一下:

Keep-alive不能永远维持一个连接;服务器中运行的应用程序确定保持连接活动的限制,并且在大多数情况下您可以配置此限制。

在HTTP/1.1中,默认使用Keep-alive。如果客户端有其他请求,他们将使用相同的连接。

无状态一词并不意味着服务器无法保持连接。它只是意味着服务器无法识别任何两个请求之间的任何关系。