百度收录 / 方法解读

请求多段范围时如何通过Content-Range头确认206响应的分段内容

当请求多个字节范围时,206响应会使用multipart/byteranges类型,通过Content-Range头确认每个分段的具体位置。

识别multipart/byteranges响应的分段结构

当请求头Range包含多个范围时,服务器返回206状态码,响应头Content-Type被设置为multipart/byteranges。这种类型表示响应体包含多个独立的数据片段,每个片段对应请求中的一个范围。响应体内部通过边界字符串分隔不同的片段,每个片段拥有独立的Content-Type和Content-Range头。

检查响应头时,需确认Content-Type是否包含multipart/byteranges。如果该类型存在,说明服务器已将多个请求范围合并到一个响应中。此时应继续查看响应体,寻找以boundary定义的分隔符,以定位每个分段的具体位置和内容。

解析每个分段的Content-Range头信息

在multipart/byteranges响应中,每个数据片段都包含自己的Content-Range头。该头部的格式为bytes start-end/total,其中start和end表示该片段在文件中的起始和结束字节位置,total为文件的总大小。通过解析这些值,可以确认服务器返回了请求中的哪些范围。

例如,若请求头Range为bytes=234-639,4590-7999,响应体中可能包含两个片段。第一个片段的Content-Range为bytes 234-639/8000,第二个片段的Content-Range为bytes 4590-7999/8000。通过对比请求头和响应头中的数值,可以验证服务器是否正确处理了所有请求的范围。

验证分段内容与请求范围的对应关系

为了确认分段内容与请求范围的对应关系,需检查每个片段的Content-Type头。该头部的值应与原始资源的类型一致,例如application/pdf。同时,Content-Range头中的数值必须与请求头Range中的范围匹配,确保返回的数据正是请求的部分。

如果发现某个片段的Content-Range数值超出请求范围,或Content-Type与资源类型不符,则说明服务器可能未正确处理多段范围请求。此时应重新检查请求头格式,或确认服务器是否支持多段范围请求。

复现多段范围请求并记录响应头

使用网络抓包工具或浏览器开发者工具发送一个包含多个范围的请求,例如Range: bytes=234-639,4590-7999。观察服务器返回的206响应,记录Content-Type和Content-Range头部的值。通过对比请求头和响应头,可以确认服务器是否正确处理了多段范围请求。

如果响应头Content-Type为multipart/byteranges,且每个片段的Content-Range值与请求头中的范围一致,则说明服务器已成功返回多段数据。反之,如果响应头未包含该类型或数值不匹配,则需进一步排查请求格式或服务器配置。

资料与延伸阅读

你可以通过以下原始资料核对文中概念,并继续深入阅读。

  1. 206 Partial Content - HTTP | MDN ↗
← 更多百度收录文章返回顶部 ↑