为什么ETag需要用双引号括起来?

ank*_*ede 8 etag caching header http express

根据RFCMDN 文档,ETag 值需要用双引号引起来"<Value>"。当我使用 CURL 且 Accept-Encoding 标头为 发出请求时gzip, deflate, br,如果 ETag 未用双引号引起来,我不会在响应标头中收到 ETag。

我很好奇为什么 ETag 规范要求它们用双引号引起来?

Kev*_*nry 6

我不知道有任何消息来源明确说明为什么需要双引号。

不过,我们可以说的是,ETag标头的值除了实体标签本身之外还包括元数据。具体来说,当值以字符串开头时,W/意味着后面的实体标记应被视为弱实体标记。

因此必须有某种方法来区分值和元数据。有很多可能的解决方案。他们可以省略引号,但是元数据必须有一个神奇的字符序列,并且当实体标签碰巧包含这些字符时可能还有一些转义机制。

标准中采用的方法简单、可读,使用熟悉的定界字符,并且解析速度快。事实上,我们有一条线索表明最后一部分很重要,因为没有转义序列(这意味着"标签的内部部分不允许转义序列本身)。