跳到主要内容

8. 处理不完整消息

服务器收到不完整的请求消息时, 通常是因为请求被取消或触发超时异常, MAY 在关闭连接之前发送错误响应.

客户端收到不完整的响应消息时, 这种情况可能发生在连接过早关闭, 或对本应为 chunked 传输编码的内容解码失败时, MUST 将该消息记录为不完整. 不完整响应的缓存要求在 [CACHING] 的 Section 3.3 中定义.

如果响应在头部区段中间终止 (即在收到空行之前), 且状态码可能依赖头部字段来传达响应的完整含义, 则客户端不能假定该含义已经被传达; 客户端可能需要重复该请求, 以确定下一步应采取什么操作.

使用 chunked 传输编码的消息体, 如果尚未收到终止编码的零大小块, 则是不完整的. 使用有效 Content-Length 的消息, 如果收到的消息体大小 (以八位组计) 小于 Content-Length 给出的值, 则是不完整的. 既没有 chunked 传输编码也没有 Content-Length 的响应通过关闭连接终止; 如果头部区段被完整接收, 则认为该响应完整, 除非底层连接指示了错误 (例如 TLS 中的 "incomplete close" 会使响应不完整, 如 Section 9.8 所述).