応答メッセージで使用される場合、「Connection:close」とはどういう意味ですか?


30

クライアントConnection: closeが要求メッセージでヘッダーを使用する場合、これは、応答メッセージを送信した後にサーバーに接続を閉じてほしいことを意味します。

このヘッダーは要求メッセージでのみ使用されると考えましたが、応答メッセージでも使用されることに気付きました。例えば:

ここに画像の説明を入力してください

応答メッセージで使用される場合、このヘッダーは何を意味しますか?

これは、クライアントがConnection: keep-aliveリクエストメッセージでヘッダーを使用した場合でも、メッセージに応答を送信した後、サーバーが接続を閉じることを意味すると思います。私は正しいですか?

回答:


28

はい、これは正しいです。サーバーは「あなたのキープアライブ要求をサポートしていません。完了したら接続を閉じるだけです」と言うことができます。

RFC 2616のセクション14.10から:

HTTP / 1.1は、送信者が「
完了」接続オプションを定義して、
応答の完了後に接続が閉じられることを通知します。例えば、

   Connection: close

要求または応答ヘッダーフィールドのいずれかは
、現在の要求/応答が完了した後、接続が「永続的」(セクション8.1)と見なされるべきではないことを示します。

持続的接続をサポートしないHTTP / 1.1アプリケーションは、すべてのメッセージに「close」接続オプションを含める必要があります。


3
それは奇妙なIMOです。サーバーが単にそれを閉じることができるなら、なぜ接続が閉じられると言うのですか?クライアントは、サーバーによって接続が閉じられたことを確認するだけではいけません。このヘッダーのポイントは何でしたか?ここには値が表示されません。
パベルP

1
@Pavel Webアプリケーションは、ロードバランサーが接続を使用している場合にキープアライブ接続を閉じるようにフロントエンドロードバランサーに通知する場合、応答に「Connection:close」httpヘッダーを含めます。
バジルA

1
@BasilAので、ロードバランサーはサーバーまたはクライアントへの接続を閉じますか?IMOロードバランサーは、サーバーによって接続が閉じられたことを確認でき、ヘッダーを読み取ることなくそのことを認識できます。また、逆も真です。サーバーはConnection: closeヘッダーなしで接続を閉じることができます
Pavel P

@Pavel通常、ロードバランサーは複数のクライアントから複数の接続を受信し、キープアライブ接続を介した多重化を使用して、バックエンドと同じ接続を利用します。一部のバックエンドがこの多重化の一部になりたくない場合、バックエンドHTTP応答に「Connection:close」を含めて、ロードバランサーに接続を閉じて多重化を停止するよう通知する必要があります。これは(スクロールまで「HTTP接続」)AWSのロードバランシングガイドに詳しく記載されているdocs.aws.amazon.com/elasticloadbalancing/latest/userguide/...
バジルA

2
@BasilAあなたが正しいようです。面白い。Connection general-headerフィールドを使用すると、送信者は特定の接続に必要なオプションを指定でき、それ以降の接続を介してプロキシによって通信することはできません。
ダニエルF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.