在响应消息中使用“连接:关闭”是什么意思?


30

当客户端Connection: close在请求消息中使用标头时,这意味着它希望服务器在发送响应消息后关闭连接。

我认为此标头仅用于请求消息中,但是我注意到它也用于响应消息中。例如:

在此处输入图片说明

在响应消息中使用此标头意味着什么?

我认为这意味着服务器将在发送响应消息后关闭连接(即使客户端Connection: keep-alive在其请求消息中使用了标头)。我对么?

Answers:


28

是的,这是正确的。服务器可以说“我不支持您的保持活动请求,只会在完成后关闭连接”。

根据RFC 2616第14.10节:

HTTP / 1.1为发送方定义了“关闭”连接选项,以
指示
响应完成后将关闭连接。例如,

   Connection: close

在请求或响应标头字段中的表示
在当前请求/响应完成后,不应将连接视为“持久”连接(第8.1节)。

不支持持久连接的HTTP / 1.1应用程序必须在每条消息中都包括“关闭”连接选项。


3
那是怪异的IMO,为什么要说如果服务器可以简单地关闭连接,那该连接将被关闭?客户端不应该只是看到服务器已关闭连接。知道这个标题有什么意义吗?我在这里看不到任何价值。
Pavel P

1
@Pavel如果希望通知前端负载平衡器关闭保持活动的连接(如果负载平衡器正在使用其中一个),则该Web应用程序在响应中包括“ Connection:close” http标头。
罗勒

1
@BasilA,以便负载均衡器关闭与服务器或客户端的连接?IMO负载平衡器可以看到该连接已被服务器关闭,并且无需读取任何标头就可以知道。反之亦然:服务器可以关闭没有Connection: close标题的连接
Pavel P

@Pavel负载平衡器通常从多个客户端接收多个连接,并通过保持活动连接使用多路复用,从而与后端使用相同的连接。当某些后端可能不希望成为此复用的一部分时,后端http响应应包括“ Connection:close”,以通知负载均衡器关闭其连接并停止复用。详细AWS负载平衡指南中(向下滚动到“HTTP连接”)这描述docs.aws.amazon.com/elasticloadbalancing/latest/userguide/...
罗勒甲

2
@BasilA看起来您是对的。有趣。连接通用头字段允许发送方指定该特定连接所需的选项,并且代理不得在其他连接上进行通信。
丹尼尔·F
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.