【问题标题】:HTTP: How should I show Content-Type and Content-Disposition when the client requests a byte range?HTTP:当客户端请求字节范围时,我应该如何显示 Content-Type 和 Content-Disposition?
【发布时间】:2009-09-09 19:16:24
【问题描述】:

昨天I asked 关于 PHP 提供的字节范围。今天我的问题是 - 在提供多个请求的字节范围时,我应该如何设置 Content-TypeContent-Disposition 标头?我应该为每个字节范围重复它们还是应该在开始时只输出一次?或者也许我根本不应该输出它们,因为客户端应该已经知道它在问什么?

【问题讨论】:

    标签: http protocols


    【解决方案1】:

    通常,如果您返回整个资源或仅返回其中的一部分,则 HTTP 响应标头应该相同(重复);当然,除了 Content-Range 标头会有所不同。

    请记住,HTTP 是无状态的,因此每个响应都应该是完整的并且能够独立存在。如果提供字节范围,你真的应该使用实体标签(ETags);这样客户端就不可能请求并获得两个真正属于同一资源的不同修订版的单独字节范围。

    【讨论】:

    • ETag 对我来说不是问题 - 内容永远不会改变。
    【解决方案2】:

    查看RFC 2616(特别是第 14.16 和 19.2 节)。如果客户端请求单个字节范围,则响应必须包含单个字节范围,并且 Content-Type 和 Content-Disposition 标头值不会改变行为(它们应该反映所服务文件的类型)。但是,如果客户端在单个请求中请求多个字节范围,则响应必须使用“multipart/byteranges”的 Content-Type,并且正文中的每个部分都指定自己的 Content-Type 标头。

    【讨论】:

    • 好的,那么内容处置呢?
    • Content-Disposition 适用于整个响应,而不是单个范围部分。我不建议您将其包含在您的回复中,除非您提供整个文件,因为目前 Content-Disposition 的唯一定义用途是指定一个文件名,这对字节范围没有多大意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    相关资源
    最近更新 更多