这是堆栈溢出的第一篇文章。但一直参考了解一些细节。我很高兴在这里发帖。希望最早能得到答案。
当响应头具有Content-Range Header时,我的缓存服务器拒绝缓存200 OK响应。这是对RFC2616投诉的实施。 但其中一个要求是缓存200 OK响应,即使它具有content-Range标头。这样可以吗?
或者根据RFC有没有违规行为?
答案 0 :(得分:0)
答案 1 :(得分:0)
服务器还可以忽略
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中的最后一段。