ETag与If-Range HTTP头中的日期比较

3
根据RFC7233If-Range HTTP头可以是实体标签或HTTP日期。 在此上下文中,RFC的第3.2节规定:
“可以通过检查前两个字符是否为DQUOTE来区分有效的实体标签和有效的HTTP日期。”
我的问题是:为什么我们需要两个字符?由于弱实体标记在此处不允许,我认为测试第一个字符是否为DQUOTE就足够了。
1个回答

2
答案似乎是,您不需要检查两个字符,只需查看第一个字符即可实现 If-Range。
如果您查看 Apache HTTP Server 的实现,您会发现它只检查第一个字符(http_protocol.c,撰写时为第 477 行)。
if (if_range[0] == '"') {

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

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

旧语句并没有错,但在If-Range中只允许使用强ETag,因此与其不直接相关。

我认为RFC7233版本的文本是为了使先前的文本更清晰而尝试的,但不幸的是,在这种情况下它没有达到它所寻求的清晰度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接