HTTP响应结束

Dor*_*Dor 3 http http-headers

什么指示没有Content-Length标题的HTTP响应结束?

我已经读过,在某些情况下,该服务器会关闭TCP连接。但是我目睹了在收到所有响应之后存在TCP连接的情况。

因此,在以下情况下会出现一个主要问题:

  • 没有Content-Length标题
  • 收到所有HTTP响应后,TCP连接存在
  • 浏览器希望使用相同的TCP连接来发送更多HTTP请求

在那种情况下,浏览器如何知道可以使用相同的TCP连接?服务器可能会发送更多与第一个HTTP请求相关的内容,而这些内容会与第二个HTTP响应混合在一起。

Ser*_*sov 5

如果客户端和服务器都支持HTTP 1.1,并且服务器事先不知道响应主体大小(因此无法发送Content-Length响应头),则服务器应使用分块编码,这允许客户端找到结尾处的末尾。响应主体,即使服务器在发送响应后没有立即关闭TCP连接。

如果无法使用HTTP 1.1(因为客户端或服务器太旧),则不能使用分块编码,在这种情况下,发送没有Content-Length标头的响应会阻止服务器保持TCP连接的持久性。