HTTP响应结束

时间:2013-07-07 19:36:00

标签: http http-headers

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

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

因此,在以下情况下出现了一个重大问题:

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

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

1 个答案:

答案 0 :(得分:4)

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

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