根据我的理解,服务器在响应消息中使用Connection: Keep-Alive头,告诉客户端在发送响应消息后不会closures连接。
但是服务器是否需要在响应消息中包含这个头部? 或者它是服务器在发送响应消息之后不closures连接的默认行为,如果服务器想要closures连接,那么它将使用Connection: close标头?
我正在谈论HTTP / 1.1。
快速的回答不是“不”。 Keep-Alive标头是HTTP 1.0语法,不包含在HTTP 1.1定义中。 HTTP 1.1默认为持久连接,并不需要一个机制来请求它们。
有关这样的问题,请参阅RFC。 HTTP 1.1我们在RFC 7230到7237中定义。 RFC提供了多种格式。
从旧的HTTP1.1规范RFC2068
19.7.1.1 Keep-Alive标题
当Keep-Alive连接令牌已经被发送了一个请求或一个响应时,一个Keep-Alive头字段也可以被包含。 Keep-Alive标题字段采用以下格式:
Keep-Alive-header = "Keep-Alive" ":" 0# keepalive-param keepalive-param = param-name "=" valueKeep-Alive头部本身是可选的,并且仅在正在发送参数时使用。 HTTP / 1.1没有定义任何参数。
如果发送Keep-Alive报头,则必须发送相应的连接令牌。 如果收到没有连接令牌,Keep-Alive头部必须被忽略。