我有一个HTTP客户端,在我发出请求时将Connection标头设置为以下值:
Connection: close
但是,当服务器发送响应时,它会将标头设置为Keep-Alive:
Connection: Keep-Alive
这对我来说似乎是直觉上的错误,我想知道客户端应该如何处理来自服务器的响应?另外,为什么服务器会响应Keep-Alive,当客户端要求关闭连接时,这是否有效?
根据HTTP RFC:
“HTTP / 1.1为发送方定义了”关闭“连接选项,以表示在完成响应后连接将被关闭 . 例如,
Connection: close
在请求或响应头字段中,表示在当前请求/响应完成后,连接不应被视为“持久”(第8.1节) . “
2 回答
没关系 . 您告诉服务器您不支持持久连接,它告诉您它 . 任何一方在关闭连接时都是完全有效的 - 它更多的是关于两者支持的信息,而不是你必须关闭这个连接命令 .
客户端说我将在当前请求/响应完成时关闭连接,或者换句话说,表示您不要告诉服务器关闭连接 . 服务器回复它支持持久连接(keep-alive) .
正如您告诉服务器您不支持持久连接一样,您应该在阅读响应时关闭连接 .