【问题标题】:Why was `Max-Age` introduced for cookies when we already had `Expires`?为什么在我们已经有 Expires 的情况下还要为 cookie 引入 Max-Age?
【发布时间】:2022-12-12 08:44:13
【问题描述】:

Cookies 有两个属性(Max-AgeExpires),它们似乎服务于相同的目的,即指定给定 cookie 何时过期。

根据MDNExpires

将 cookie 的最长生命周期指示为 HTTP 日期时间戳。有关所需的格式,请参阅日期。

还有Max-Age

指示 cookie 过期之前的秒数。零或负数将使 cookie 立即过期。如果同时设置了 Expires 和 Max-Age,则 Max-Age 优先。

对我来说,这听起来像是完全同义的,唯一的区别是表示到期日期的格式; Expires 指定实际日期时间,Max-Age 指定时间跨度。

看起来 Expires 实际上早于 Max-Age,而 Max-Age 的引入时间要晚得多,但为什么呢?那是我的问题。 Expires 有什么缺点Max-Age 望改正?什么时候应该优先选择一个?如果Max-Age 唯一不同的是如何它表示到期日期,那么它的介绍似乎毫无意义,不是吗?

令我惊讶的是,我实际上找不到任何相关信息,似乎我是唯一一个对此打上问号的人,我觉得这很奇怪,所以如果我遗漏了什么请告诉我。

请注意,我的问题严格来说并不是关于这两个属性之间的技术差异(已经有类似this one 的问题涵盖了这一点),我特别好奇原因以及引入Max-Age 背后的动机,当时Expires 已经存在并且做了基本相同的事情。

【问题讨论】:

    标签: http cookies


    【解决方案1】:

    我觉得最好用Max-Age。想一想当前端和后端以某种方式(意外地)使用不同时区时会发生什么。它不太容易出错,但为了向后兼容,您也应该设置 Expires 属性。此外,如果您代码中的某些逻辑依赖于 cookie 的过期,则您应该清楚地使用 Expires

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-05
      • 2022-01-16
      • 2017-11-13
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 2015-02-15
      • 2016-02-04
      相关资源
      最近更新 更多