📜  HTTP 标头 |电子标签

📅  最后修改于: 2022-05-13 01:56:40.614000             🧑  作者: Mango

HTTP 标头 |电子标签

ETag 或实体标签是一个响应类型的标头,用作验证器以让客户端发出条件请求。它通过触发请求标头来提高重新验证请求的效率,这有助于 Web 缓存验证,从而经济地利用网络带宽。

生成ETag作为特定浏览器资源的标识。每次用户打开相同的资源时,浏览器都会发送一个小令牌来验证已经存在于浏览器 HTTP 缓存中的资源版本是否与网络服务器上的当前版本匹配。如果资源匹配,则 Web 服务器不需要发送完整响应。这使过程更快并节省数据。

句法:

ETag : "etag-value"   (strong validation)
ETag : W/"etag-value"  (weak validation)   

指令:此标头接受两个如上所述和如下所述的指令:

  • “etag-value”:它是一个双引号中的字符字符串。每次浏览器资源更改时都会生成一个新值,并且它是唯一的。没有关于生成值顺序的 HTTP 规范。因此,价值生成的方法完全依赖于网络服务器。
  • W/ :这是弱验证的象征。与强验证器标签相比,它们非常容易生成,但在执行比较过程方面有所不同。如果两个标签的不透明标签逐个字符匹配,则弱比较认为两个标签是等效的,而不管其中一个或两个都被标记为“弱”。而强字符仅在两个标签逐个匹配并且两个标签都不弱时才字符两个标签是等效的。

ETag 与请求标头的工作:

  • If-Match Header :这主要用于多个代理可能在同一资源上工作时,从而防止在使用 POST、PUT、DELETE 等方法时意外覆盖。这里,特定资源的 ETag 标头值包含在If-Match标头,用于检查在执行指定操作时资源是否发生任何更改。 412 Precondition Failed错误,如果匹配不发生则显示。如果当前表示与先前的请求完全或部分不匹配,它也可用于中止请求。
ETag : "21e92a357b3434b5aa"
If-Match : "21e92a357b3434b5aa"
  • If-None-Match Header :当用户先前访问的特定网站的已存储响应已过期时使用此标头。在这里,服务器为当前版本生成If-None-Match 值,并将其与存储在用户浏览器中的 ETag 值进行比较。如果两个值匹配,则会显示304 Not Modified状态代码。在这种情况下,在比较实体标签时必须使用弱比较。
If-None-Match : "21e92a357b3434b5aa"

例子 :

ETag: "21e92a357b3434b5aa"  (strong validation)
ETag: W/"21e92a457b3434b5aa"  (weak validation)

支持的浏览器: HTTP 标头支持的浏览器 | ETag标头如下所列:

  • 微软边缘
  • 谷歌浏览器
  • 火狐浏览器
  • 苹果浏览器
  • 歌剧
  • IE浏览器