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 manual,mktime函数:
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 的生命周期。
我正在设置一个 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 manual,mktime函数:
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 的生命周期。