logo  

跟我一起读RFC

跟我一起读RFC
作者: 陈安廉

摘要:软件开发进阶系列


3.11 实体标签 (Entity Tags)


2020-12-02 13:45:47

实体标签被用于比较相同请求资源中两个或更多实体。HTTP/1.1 在 ETag(14.19 节),If-match(14.24 节),If-None-match(14.26 节)和 If-Rang(14.27 节)头域中运用实体标签。关于它们怎样被当作一个缓存验证器(cache validator)被使用和比较在 13.3.3 节被定义。一个实体标签由一个给定的晦涩引用字符串(opaque quoted string),还可能前面带一个弱指 示器组成。

      entity-tag = [ weak ] opaque-tag
      weak       = "W/"
      opaque-tag = quoted-string


一个“强实体标签”如果被一个资源的两个实体里共享,那么这两个实体必须在字节上等价。一个“弱实体标签”是以"W/"前缀的,它可能会被一个资源的两个实体共享,如果这两个实体是等价的,并且能彼此替换,并且替换后也不会在语义上发生太大改变。一个弱实体标签只能用于弱比较(weak comparison)。 

在一个特定资源的所有实体版本里,一个实体标签必须能唯一。一个给定的实体标签值可以被用于不同的 URI 请求的实体。相同实体标签的值应用于不同 URI 请求的实体,并不意味着这些实体是等价的。