Cookie 过期是特定于浏览器还是特定于服务器?

Cookie expiration is browser specific or server specific?

我正在设置一个 cookie 的过期时间

mktime(24,0,0).

我的问题很简单。如果浏览器时区不同,cookie 会跟随服务器的时区或浏览器的时区过期吗?

Set-Cookie header 将时区信息作为过期日期时间的一部分,以便用户代理知道它何时应该过期。

Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT

来自 setcookie

的 php 文档

expire

...

Note: You may notice the expire parameter takes on a Unix timestamp, as opposed to the date format Wdy, DD-Mon-YYYY HH:MM:SS GMT, this is because PHP does this conversion internally.

来自PHP manualmktime函数:

Returns the Unix timestamp corresponding to the arguments given. This timestamp is a long integer containing the number of seconds between the Unix Epoch (January 1 1970 00:00:00 GMT) and the time specified.

它包含秒数,时间量:无需关心时区。

mktime(24,0,0)

根据您所在的 timezone() 服务器计算第二天的 unix 时间戳 00:00:00 运行 和 returns 整数时间戳。

现在,当你在 setcookie(Visit, date("F jS - g:i a"), mktime(24,0,0)); 在浏览器上,它将此 'timestamp since epoch' 转换为本地时区并设置 cookie 的过期时间。

您应该知道我们仍然根据服务器端的时间范围控制 cookie 的生命周期。