为什么Last-Modified可以成为强验证器

问题描述 投票:0回答:1

我阅读了RFC 7232,其中描述了Last-Modified时间如下:

最后修改时间在请求中用作验证器时,隐式是弱的,除非可以使用以下规则推断出它是强的:

  1. 客户端将在 If-Modified-Since、If-Unmodified-Since 或 If-Range 标头字段中使用验证器,因为客户端具有关联表示的缓存条目,并且

  2. 该缓存条目包含一个日期值,它给出了源服务器发送原始响应的时间,并且

  3. 显示的上次修改时间至少早于日期值 60 秒。

我的问题是,“为什么 Last-Modified 支持的这三个条件意味着它可以成为强验证器?”

http network-programming http-headers last-modified
1个回答
0
投票

您引用的部分继续说:

此方法依赖于以下事实:如果有两个不同的响应 由源服务器在同一秒内发送,但两者都有 同样

Last-Modified
时间,那么这些响应中至少有一个会
Date
值等于其
Last-Modified
时间。 任意的 60 秒限制可防止
Date
Last-Modified
值是从不同的时钟或在 准备回复的时间有些不同。

假设我们有两种资源表示形式,A是旧版本,B是新版本。如果它们都在同一秒内进行修改,那么它们都可以在相同的

Last-Modified
时间内提供服务。因此,如果我们要做的只是
Last-Modified
标头,我们不知道表示是 A 还是 B。这就是
Last-Modified
成为弱验证器的原因。

但是假设缓存条目还有一个关联的

Date
字段,并且它晚于
Last-Modified
。我们现在可以安全地假设缓存条目是 B,即截至
Date
时间的当前版本。由于我们现在知道缓存条目代表哪个版本,我们可以将
Last-Modified
视为强验证器。

(请注意最新标准使用1秒而不是60秒。)

© www.soinside.com 2019 - 2024. All rights reserved.