HTTP 字节范围和多部分/字节范围替代方案?

Posted

技术标签:

【中文标题】HTTP 字节范围和多部分/字节范围替代方案?【英文标题】:HTTP byte ranges and multipart/byteranges alternatives? 【发布时间】:2013-10-10 07:52:16 【问题描述】:

rfc2616 (HTTP/1.1):

不得使用 multipart/byteranges 媒体类型。

对多个范围请求的响应,其结果是单个 范围,可以作为带有一个部分的多部分/字节范围媒体类型发送。

不能解码多部分/字节范围消息的客户端不得 在单个请求中请求多个字节范围。

如果我理解正确,单个请求中的多个范围可能会使用 multipart/byteranges 并且客户端必须能够对其进行解码或根本不应该请求它。

“MAY”是否暗示还有可以使用的多部分/字节范围的替代品?有吗?如果是这样,是否有请求它们的标头?

例如,服务器能否将所有字节范围连接成一个单独的部分响应?

【问题讨论】:

【参考方案1】:

如果一个请求请求多个范围,并且服务器可以将请求的范围连接成一个连续的范围,那么响应可以:

multipart/byteranges 与单个 MIME 部分一起用于连接范围,其中该部分有自己的 Content-Range 标头。

自行发送连接数据并包含***Content-Range 标头。

【讨论】:

【参考方案2】:

就我在 2012 年的经验而言,我建议坚持第一个,即“不得使用 multipart/byteranges 媒体类型发送对单个范围请求的响应。”因为有些客户会窒息。

【讨论】:

也可以反过来 - 用于 Node 的 Electron Updater(如 2021-07-29)假定单范围响应无效并回退到请求文件的完整下载.

以上是关于HTTP 字节范围和多部分/字节范围替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

记录上锁(字节范围锁,特例:锁住文件的某一部分或者整个文件)

如何在 Spring Boot 中实现部分 GET 请求?

如何对媒体片段的任何部分进行范围请求?

各种数据类型的表示范围

int各种数据类型的表示范围

C语言char类型数据是否远远不止ASCII码