HTTP/1.1默认使用长连接,它允许多个请求和响应在单个连接上传送。“close”连接选项被用作表明在当前请求/响应之后连接将不会保持的信号。HTTP实现应该支持长连接。

    一个接收者通过最近的接收到消息协议版本以及Connection头字段(如果有的话)来确定连接是否是一个长连接:

    • 如果“close”连接选项村子啊, 连接在当前响应后将不会被保持,否则
    • 如果接收到的协议是HTTP/1.1(或更新),连接在当前响应之后将会保持,否则
    • 如果接收到的协议是HTTP/1.0,“keep-alive”连接选项存在,接收者不是一个代理,并且接收者希望实现HTTP/1.0“keep-alive”机制,链接将在当前响应之后保持,否则
    • 连接将在当前响应之后关闭。

    客户端可以在一个长连接上发送一个额外的请求知道它发送完或接收到一个“close”连接选项或者接收到一个没有“keep-alive”连接选项的HTTP/1.0响应。

    为了保持连续,一个连接上的所有消息需要有一个自定义的消息长度(即一个不是由连接闭合定义的长度),如3.3节所描述。服务器必须读取整个请求消息体或者在发送它的响应后关闭连接,否则长连接上的剩余数据将被错误的解释为下一个请求。同样的,客户端必须读取整个响应消息体,如果它试图为一个子请求复用同一个连接。

    代理服务器不能保持与HTTP / 1.0客户端的长连接(参见[RFC2068]的第19.7.1节以获得关于许多HTTP / 1.0客户端实现的Keep-Alive头部字段的问题的信息和讨论)。

    查看附录A.1.2 了解向下兼容HTTP/1.0客户端的更多信息。