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

alp*_*evx 8 connection rest header http

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

   Connection: close
Run Code Online (Sandbox Code Playgroud)

但是,当服务器发送响应时,它会将标头设置为Keep-Alive:

   Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)

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

根据HTTP RFC:

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

   Connection: close
Run Code Online (Sandbox Code Playgroud)

在请求或响应头字段中,表示在当前请求/响应完成后,连接不应被视为"持久"(第8.1节)."

Gan*_*alf 13

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


nos*_*nos 6

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

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