内容范围标头可以在HTTP 200 OK响应中

时间:2017-03-31 05:51:41

标签: http-headers

这是堆栈溢出的第一篇文章。但一直参考了解一些细节。我很高兴在这里发帖。希望最早能得到答案。

当响应头具有Content-Range Header时,我的缓存服务器拒绝缓存200 OK响应。这是对RFC2616投诉的实施。 但其中一个要求是缓存200 OK响应,即使它具有content-Range标头。这样可以吗?

或者根据RFC有没有违规行为?

2 个答案:

答案 0 :(得分:0)

您可以使用Varnish并使用VCL

编写一些配置

更多关于在此链接上实现此目的的详细信息

How to cache HTTP range requests

答案 1 :(得分:0)

根据MDN docs for Range

  

服务器还可以忽略Range标头,并以200状态代码返回整个文档。

类似地,部分请求响应下的MDN docs for range requests状态:

  
      
  • 如果不支持范围请求,则会从服务器发回200 OK状态。
  •   

换句话说,如果服务器响应200头而收到Range,则浏览器可以假定服务器不支持部分响应。目前,Chrome就是这样做的。即使您将整个文档发回,如果Chrome在请求视频的一部分时收到200,则回放栏/搜索栏也不起作用

关于Content-Range是否实际上是 allowed 的信息,我还没有找到任何文档。据我了解,如果您发送Content-Range来响应200标头,则Range标头没有意义,因为您应该发送整个文件。换句话说,它可以忽略不计;只有206才有意义。

要回答其他问题,因此可以缓存200,而不管是否存在Content-Range。带有206的{​​{1}}也可能会被缓存:

  

默认情况下,206响应是可缓存的;即,除非明确的缓存控件另有说明(请参见[RFC7234]的第4.2.2节)。

-Section 4.1 of RFC 7233中的最后一段。