HSTS数据由每个 Web 浏览器保存。
当向实现 HSTS 的域发出请求时,响应标头将包含一个Strict-Transport-Security标头,该标头记录记录的最大年龄以及可选的其他一些与 HSTS 相关的值。
这个最大年龄有效地给出了从收到响应时开始的生存时间。
RFC 6797 第 11.2 节(非规范)说明了这一点,尽管没有明确说明,其中指出:
“未来的恒定值”方法可以通过不断地向 UA 发送相同的 max-age 值来实现。
和
“固定时间点”方法可以通过发送表示在所需到期时间之前的剩余时间的 max-age 值来完成。这将要求 HSTS 主机在每个 HTTP 响应中发送一个新计算的 max-age 值。
因此,如果一个域过去使用过 HSTS,那么在之前没有更改 HSTS max-age 的情况下,可以预期没有客户端依赖旧 HSTS 数据的最早时间是最后一次请求的时间返回 HSTS 数据,加上当时 HSTS 数据中所述的时间。如果 HSTS max-age 已降低,则这些时间段形成滑动窗口;最后结束的时间是预计没有客户端依赖旧的 HSTS 数据的最早时间。这是第 8.1.1 节(规范性)中要求之一的结果:
如果一个已知的 HSTS 主机的缓存条目在过去有一个过期日期,那么它就是“过期的”。如果在任何时候缓存中存在过期的已知 HSTS 主机,UA 必须从其缓存中驱逐所有过期的已知 HSTS 主机。
在任何请求中,如果响应通过安全传输接收并包含 HSTS 数据,则如第 8.1 节所述,客户端 UA必须更新其已知 HSTS 主机列表(规范):
如果 /.../ UA 必须 [要么]: /.../
因此,打开 HSTS 实际上是一个承诺,即在不短于 max-age HSTS 参数的持续时间(从响应的那一刻开始计算)内继续提供有效的 HTTPS。
作为进一步的结果,HSTS 数据没有固定的“到期”日期和时间,除非服务器使用RFC中非规范描述的“固定时间点”方法。