webdevqa.jp.net

Connection:keep-aliveがまだhttpヘッダーで指定されているのはなぜですか(非推奨ではありません)?

「HTTP:The Definitive Guide」によると、

Connection: keep-alive

hTTP/1.1では接続がデフォルトで永続的であり、送信して手動で閉じる必要があると指定されているため、永続的な接続を指定することはHTTP /1.1では非推奨です。

Connection: close


したがって、私の単純な仮定は、「接続:キープアライブ」は実際にはもう使用されるべきではないということです。しかし、それはまだ健在のようです。たとえば、キープアライブは次のクエリで返されます。

curl -I https://foursquare.com

HTTP/1.1 200 OK
Server: nginx/0.8.52
Date: Thu, 11 Aug 2011 21:15:45 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Expires: Thu, 11 Aug 2011 21:15:45 UTC
Set-Cookie: XSESSIONID=w19~kqtn4bpqmfq51p8qolstpk6ti;Path=/;Secure;HttpOnly
Set-Cookie: LOCATION=49.25::-123.13330078125::Hockeytown::CA;Path=/;Secure
Set-Cookie: bbhive=OQ32XATE0OQAEVCY0IVSWUDPQ1A2GT
Content-Length: 38815
Cache-Control: no-cache, private, no-store
Pragma: no-cache

私の質問は次のとおりです:なぜ接続:キープアライブがまだHTTPヘッダーで指定されているのですか?

当然の質問は次のとおりです。HTTP/1.0とそのバリアントのみを話す(クライアント、サーバー、プロキシなど)はまだありますか、それとも2011年の時点でHTTP/1.1上にそのようなエンティティがほとんどありますか?

これが私の作業仮説です:

1)HTTP/1.0は使用されなくなり、「何年も前」のb/c

2)(1)を考えると、キープアライブはもう使用すべきではありませんが、純粋に痕跡的な理由で(つまり、特定のテクノロジーがそれを削除したり、ブードゥーコードとして保持したりすることを気にしなかったなど)

(1)が正しくなく、HTTP/1.0がまだ使用されている場合は、HTTP 1.0-1.1相互運用に関するフォローアップの質問にもかかわらず、キープアライブを使用し続けることがもっともらしいと思われます。

洞察を共有してくれてありがとう!

19
capdigi

HTTP /1.0にはConnectionのようなヘッダーはありませんが、HTTP /1.0とHTTP/1.1にはさまざまな実装があります。

そう Connection: keep-aliveが使用されます '念のため'

14
TheHorse