ETag与If-Range HTTP标头中的日期

时间:2015-01-14 23:40:50

标签: http-headers etag

根据RFC7233If-Range HTTP标头可以是实体标签或HTTP日期。在此上下文中,RFC的第3.2节说明了

  

可以将有效的实体标记与有效的HTTP日期区分开来   检查DQUOTE的前两个字符。

我的问题:为什么我们需要两个字符?由于这里不允许使用弱的实体标签,我认为测试第一个字符是否是DQUOTE就足够了。

1 个答案:

答案 0 :(得分:2)

答案似乎是你不需要检查两个字符,只看第一个字符就足以实现If-Range

如果查看Apache HTTP Server实现,您可以看到它只在检查时检查了第一个字符(http_protocol.c,第477行)。

if (if_range[0] == '"') {

我认为可以通过查看早期版本的HTTP 1.1规范(RFC2616)来解释文本中略有误导性的措辞,其中说:

  

服务器可以区分有效的HTTP日期和任何形式的   通过检查不超过两个字符来实现实体标记。

旧语句没错,但与If-Range没有直接关系,只允许使用强ETag。

我希望文本的RFC7233形式试图使之前的文本更清晰,但不幸的是,在这种情况下,它没有达到它所寻求的清晰度。