2011-10-28 34 views
13

解決:這裏粘貼字節使我意識到,我錯過了塊之間的空行......是默認情況下隱式保持活動狀態的HTTP/1.1請求?


是否一個HTTP/1.1請求需要指定一個Connection: keep-alive頭,或者是它總是保持活躍?

This guide讓我覺得它會;當我的http服務器收到1.1請求時,它將保持活動狀態,除非明確接收到Connection: close標頭。

,因爲我的abhttperf不同的客戶端行爲我問的是讓我瘋狂到想知道在這一個我的理智......


這裏是httperf --hog --port 42042 --print-reply body發送:

GET/HTTP/1.1 
User-Agent: httperf/0.9.0 
Host: localhost 

這裏是我的服務器的迴應:

HTTP/1.1 200 OK 
Connection: keep-alive 
Transfer-Encoding: chunked 
Content-Length: 18 

12 
Hello World  1 
0 

httpref及時打印出響應,但隨即坐在那裏,雙方都沒有關閉連接,並且httpref沒有退出。

我的bug在哪裏?

+0

是的,keep-alive是HTTP/1.1默認值。 – Benjie

+1

分塊編碼中的內容長度沒有多大意義 – nurettin

回答

19

RFC 2616, section 8.1.2

之間的HTTP/1.1和更早版本的HTTP的顯著差異是永久連接任何HTTP連接的缺省行爲。也就是說,除非另有說明,否則客戶端應該假定即使在服務器發生錯誤響應之後服務器也將保持持久連接。