2013-07-07 66 views
1

什麼表示HTTP響應結束,而沒有Content-Length標頭?HTTP響應結束

我讀過,在某些情況下,該服務器關閉TCP連接。但我目睹了TCP連接在收到所有響應後存在的情況。

  • 沒有一個Content-Length首部接收所有的HTTP響應
  • 瀏覽器希望使用在同一個TCP連接後
  • TCP連接存在:

    所以,當一個主要問題出現爲了發送更多的HTTP請求

在這種情況下,瀏覽器如何知道它可以使用相同的TCP連接? 服務器可能會發送更多與第1個HTTP請求相關的內容,並且會與第2個HTTP響應混淆。

回答

3

如果客戶端和服務器都支持HTTP 1.1,並且服務器事先不知道響應主體大小(因此無法發送Content-Length響應標頭),則服務器應該使用chunked encoding,它允許客戶端查找即使服務器在發送響應後沒有立即關閉TCP連接,響應主體的結尾也是如此。

如果無法使用HTTP 1.1(因爲客戶端或服務器太舊),則不能使用分塊編碼,並且在這種情況下發送沒有Content-Length標頭的響應會阻止服務器保持TCP連接持久化。