【发布时间】:2009-09-09 19:16:24
【问题描述】:
昨天I asked 关于 PHP 提供的字节范围。今天我的问题是 - 在提供多个请求的字节范围时,我应该如何设置 Content-Type 和 Content-Disposition 标头?我应该为每个字节范围重复它们还是应该在开始时只输出一次?或者也许我根本不应该输出它们,因为客户端应该已经知道它在问什么?
【问题讨论】:
昨天I asked 关于 PHP 提供的字节范围。今天我的问题是 - 在提供多个请求的字节范围时,我应该如何设置 Content-Type 和 Content-Disposition 标头?我应该为每个字节范围重复它们还是应该在开始时只输出一次?或者也许我根本不应该输出它们,因为客户端应该已经知道它在问什么?
【问题讨论】:
通常,如果您返回整个资源或仅返回其中的一部分,则 HTTP 响应标头应该相同(重复);当然,除了 Content-Range 标头会有所不同。
请记住,HTTP 是无状态的,因此每个响应都应该是完整的并且能够独立存在。如果提供字节范围,你真的应该使用实体标签(ETags);这样客户端就不可能请求并获得两个真正属于同一资源的不同修订版的单独字节范围。
【讨论】:
查看RFC 2616(特别是第 14.16 和 19.2 节)。如果客户端请求单个字节范围,则响应必须包含单个字节范围,并且 Content-Type 和 Content-Disposition 标头值不会改变行为(它们应该反映所服务文件的类型)。但是,如果客户端在单个请求中请求多个字节范围,则响应必须使用“multipart/byteranges”的 Content-Type,并且正文中的每个部分都指定自己的 Content-Type 标头。
【讨论】: