2011-10-28 13 views
13

解決は、デフォルトで暗黙的にキープアライブのHTTP/1.1要求ですか?


...私はチャンクの間に空行が欠落していたことを実感しましたここでバイトを貼り付けると、HTTP/1.1リクエストがConnection: keep-aliveヘッダーを指定する必要がないか、それは常にありますキープアライブ?

This guide私にはそう思われました。私のhttpサーバが1.1リクエストを取得したとき、それは明示的にConnection: closeヘッダーを受信しない限り、キープアライブです。

abhttperfの私の異なるクライアントの動作はこの1つに私の正気を不思議に十分怒っ私を運転しているので、私は


はここ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です。

私のバグはどこですか?

+0

はい、キープアライブはHTTP/1.1のデフォルトです。 – Benjie

+1

チャンクエンコーディングのコンテンツの長さはあまり意味がありません – nurettin

答えて

19

RFC 2616, section 8.1.2から:

HTTPのHTTP/1.1およびそれ以前のバージョンとの間に有意な差は持続的な接続が任意のHTTP接続のデフォルトの動作であるということです。つまり、特に指定のない限り、クライアントはサーバーからのエラー応答後でも、サーバーが永続的な接続を維持すると想定しなければならない(SHOULD)。

関連する問題