SetCookie for Little Time 在非 Firefox 中不起作用


setcookie for little time doesn't work in non-firefox

在测试一些脚本时,我注意到,如果过期时间很短(不为零) - cookie在Chrome,Opera,IE中不可用。

例:

<?php
// setting cookie for 5 minutes
setcookie( 'cookie1' , 'Test', time()+60*5 );
echo $_COOKIE['cookie1'];
// yeap (it should display it only with refresh of page - I know:)
?>

在 Firefox 中 - 我看到单词测试(打开并刷新页面后)。

但是在其他浏览器中 - 我没有看到这个。例如,如果我将时间更改为time()+60*100 - 它在所有浏览器中都可以正常工作。

这是什么原因呢?

上级:

来自 Chome 开发工具(抱歉,不知道 Chrome firebug 是如何称呼的):

Date:Sun, 22 May 2011 10:29:59 GMT
Keep-Alive:timeout=15, max=99
Server:Apache/2.2.14 (Ubuntu)
Set-Cookie:Maslo123=Test; expires=Sun, 22-May-2011 10:34:59 GMT

日期早于"到期";

正如我们已经了解到您的服务器时间错误了几个小时,因此 cookie 已经过期。

Firefox 仍然存储 cookie 的原因可能是它检测到服务器和客户端之间的奇数时差,并使用日期值和过期属性值之间的差异来确定 cookie 到期日期

这些问题也是后来的RFC标准(如当前的RFC 6265)更喜欢增量秒的相对时间值的原因。