HTTP状态码206:什么时候应该使用?

时间:2014-04-14 23:33:49

标签: facebook http http-headers facebook-opengraph varnish

206 status code(w3.org)表示响应带有Range标头的请求的部分结果。

如果要求的文件是例如“明确”的话长度为1024字节,Range标头为bytes=0-512,则应返回状态代码206 Partial Content。 (假设服务器能够返回内容)

但如果Rangebytes=0-2000怎么办? 应该返回200 OK206 Partial Content吗? 在我看来,这在规范中没有明确定义 - 或者我可能没有在正确的地方阅读?

我为什么关心? 我问,因为Varnish Cache似乎总是返回206 Partial Content,而Facebook Open Graph debugger似乎期望200 OK。 [1] [2]

示例:GET请求清漆
(我收到了完整的文档,但仍然返回206 Partial Content

> curl --dump-header - -H 'Range: bytes=0-7000' https://www.varnish-cache.org/sites/all/themes/varnish_d7/logo.png
HTTP/1.1 206 Partial Content
Server: nginx/1.1.19
Date: Mon, 14 Apr 2014 22:43:31 GMT
Content-Type: image/png
Content-Length: 2884
Connection: keep-alive
Last-Modified: Thu, 15 Dec 2011 12:30:46 GMT
Accept-Ranges: bytes
X-Varnish: 1979866667
Age: 0
Via: 1.1 varnish
Content-Range: bytes 0-2883/2884

进一步w3参考:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

1 个答案:

答案 0 :(得分:2)

没关系。这两个回复都是有效的。

(另请注意,当前的规范现在为http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p5-range-26.html,即将发布为RFC)