206状态码是什么?

服务器通过传输与请求的range报头字段中可满足的范围相对应的选定表示的一个或多个部分,成功地完成了对目标资源的范围请求1

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

HTTP/1.1 206部分内容日期:1995年11月15日星期三06:25:24 GMT Last-Modified: 1995年11月15日星期三04:58:08 GMT Content- range: bytes 21010-47021/47022 Content- length: 26012 Content- type: image/gif…26012字节的部分图像数据…

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

在多部分有效负载中每个主体部分的报头区域内,服务器必须生成一个Content-Range报头字段,对应于该主体部分所包含的范围。中的Content-Type报头字段200好了响应时,服务器应该在每个正文部分的头部区域生成相同的Content-Type字段。例如:

HTTP/1.1 206部分内容日期:Wed, 15 Nov 1995 06:25:24 Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT Content- length: 1741 Content- type: multipart/byteranges;Content-Type: application/pdf Content-Range: bytes 500-999/8000…第一个范围…——this_string_separated Content-Type: application/pdf Content-Range: bytes 7000-7999/8000…第二个范围——this_string_separating——

当请求多个范围时,服务器可以合并任何重叠的范围,或者被一个比发送多个部分的开销更小的间隙隔开的范围,而不管相应的字节范围规格在接收到的范围报头字段中出现的顺序如何。由于multipart/ byterangpayload各部分之间的典型开销约为80字节,这取决于所选表示的媒体类型和所选边界参数长度,因此传输许多不相连的小部分可能比传输整个所选表示的效率要低。

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

当生成多部分响应有效负载时,服务器应该按照接收到的Range报头字段中对应的字节范围规格的相同顺序发送这些部分,排除那些被认为不能满足或合并到其他范围的范围。接收到多部分响应的客户端必须检查每个主体部分中的Content-Range报头字段,以确定哪个范围包含在该主体部分中;客户端不能依赖于接收它所请求的相同范围,也不能依赖于它所请求的相同订单。

当生成一个206响应时,服务器必须生成以下报头字段,如果该字段本来是在200好了对相同请求的响应:日期,缓存控制,ETag,过期,内容位置和变化。

如果在响应带有If- range报头字段的请求时生成了206,发送方不应该生成超出上述要求的其他表示报头字段,因为客户端被理解为已经有包含这些报头字段的先前响应。否则,发送方必须生成所有的表示报头字段200好了响应相同的请求。

默认情况下,206响应是可缓存的;也就是说,除非显式缓存控制另有指示3.


206个代码引用

Rails HTTP状态符号: partial_content

HTTP状态常数http。StatusPartialContent

Symfony HTTP状态常量响应:HTTP_PARTIAL_CONTENT

Python2 HTTP状态常量httplib。PARTIAL_CONTENT

Python3+ HTTP状态常量http.client.PARTIAL_CONTENT

Python3.5+ HTTP状态常量http.HTTPStatus.PARTIAL_CONTENT

额外的资源


返回HTTP状态码列表

最重要的