【问题标题】:End of an HTTP ResponseHTTP 响应结束
【发布时间】:2013-07-05 03:09:49
【问题描述】:

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

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

所以在以下情况下会出现一个主要问题:

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

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

【问题讨论】:

    标签: http http-headers


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 2016-01-29
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多