2×× 成功

206 Partial Content 部分内容

当从客户端发送 Range 标头以仅请求资源的一部分时,将使用此响应代码
服务器通过传输与请求的 Range 标头字段1中的可满足范围相对应的选定表示形式的一个或多个部分,成功满足目标资源的范围请求.

如果正在传输单个部分,则生成 206 响应的服务器必须生成一个 Content-Range 头字段,描述包含所选表示的范围,以及由该范围组成的有效负载。例如:

HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Range: bytes 21010-47021/47022
Content-Length: 26012
Content-Type: image/gif

... 26012 bytes of partial image data ...

如果正在传输多个部分,则生成 206 响应的服务器必须生成“multipart/byteranges”有效负载2和包含 multipart/byteranges 媒体类型及其所需边界参数的 Content-Type 头字段。为避免与单部分响应混淆,服务器不得在多部分响应的 HTTP 标头部分中生成 Content-Range 标头字段(该字段将在每个部分中发送)。

在多部分有效负载中每个正文部分的标头区域内,服务器必须生成与包含在该正文部分中的范围相对应的 Content-Range 标头字段。如果选择的表示在200 OK响应中具有 Content-Type 头字段,则服务器应该在每个正文部分的头区域中生成相同的 Content-Type 字段。例如:

HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Length: 1741
Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES

--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 500-999/8000

...the first range...
--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 7000-7999/8000

...the second range
--THIS_STRING_SEPARATES--

当请求多个范围时,服务器可以合并任何重叠的范围,或者由小于发送多个部分的开销的间隙分隔的范围,无论相应的字节范围规范出现的顺序如何接收到的 Range 头域。由于多部分/字节范围有效负载部分之间的典型开销约为 80 字节,具体取决于所选表示的媒体类型和所选边界参数长度,传输许多不相交的小部分的效率可能低于传输整个选定的部分表示。.

服务器不得对单个范围的请求生成多部分响应,因为不请求多个部分的客户端可能不支持多部分响应。但是,如果请求多个范围并且发现只有一个范围是可满足的,或者在合并后只剩下一个范围,则服务器可以生成只有一个主体部分的 multipart/byteranges 有效负载。无法处理多部分/字节范围响应的客户端不得生成请求多个范围的请求.

当生成多部分响应负载时,服务器应该按照相应字节范围规范出现在接收到的 Range 头字段中的相同顺序发送部分,不包括那些被认为不可满足或合并到其他范围中的范围。接收多部分响应的客户端必须检查每个正文部分中存在的 Content-Range 标头字段,以确定该正文部分中包含哪个范围;客户端不能依赖于接收它请求的相同范围,也不能依赖于它请求的相同顺序。.

当生成 206 响应时,服务器必须生成以下头字段,除了上面要求的那些,如果该字段将在对同一请求的200 OK 响应中发送:Date、Cache-Control、ETag、Expires、Content-Location, 和 Vary。

如果生成 206 以响应具有 If-Range 标头字段的请求,则发件人不应生成除上述必需字段之外的其他表示标头字段,因为客户端已被理解为已经具有包含这些标头字段的先前响应。否则,发送方必须生成所有表示标头字段,这些字段本应在对同一请求的 200 OK 响应中发送.

默认情况下,206 响应是可缓存的;即,除非显式缓存控件3另有说明.


206 代码参考

Rails HTTP Status Symbol :partial_content

Go HTTP Status Constant http.StatusPartialContent

Symfony HTTP Status Constant Response::HTTP_PARTIAL_CONTENT

Python2 HTTP Status Constant httplib.PARTIAL_CONTENT

Python3+ HTTP Status Constant http.client.PARTIAL_CONTENT

Python3.5+ HTTP Status Constant http.HTTPStatus.PARTIAL_CONTENT

← http状态码