服务器是否应遵守HTTP连接:从客户端发送的关闭标头?

时间:2010-08-06 14:36:52

标签: http rest header connection

我有一个HTTP客户端,在我发出请求时将Connection标头设置为以下值:

   Connection: close

然而,当服务器发送响应时,它将标题设置为Keep-Alive:

   Connection: Keep-Alive

这对我来说似乎是直觉上的错误,我想知道客户端应该如何处理来自服务器的响应?另外,为什么服务器响应Keep-Alive,当客户端要求关闭连接时,这是否有效?

根据HTTP RFC:

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

   Connection: close
请求或响应头字段中的

表示在当前请求/响应完成后,连接不应被视为“持久”(第8.1节)。“

2 个答案:

答案 0 :(得分:13)

没关系。您告诉服务器您不支持持久连接,它告诉您它。任何一方在关闭连接时都是完全有效的 - 它更多的是关于两者支持的信息,而不是你必须关闭这个连接命令。

答案 1 :(得分:6)

客户端说 I 将在当前请求/响应完成时关闭连接,或者换句话说,表示您不支持持久连接。也就是说,它不会告诉服务器关闭连接。服务器回复它支持持久连接(keep-alive)。

正如您告诉服务器您不支持持久连接一样,您应该在阅读响应时关闭连接。