所以我正在使用 Perl 的 CGI 模块创建 cookie,我是这样做的:
my $cookie = CGI::Cookie->new(-name => "$name",
-value => "$val",
-expires => "$expiration_date",
-path => $cookie_path,
-secure => 0
);
print "Set-Cookie: $cookie\n";
并且cookie是在浏览器中设置的,唯一的问题是时间与我设置的过期日期不匹配。例如,如果我将 +1d 设置为到期日期,它实际上会执行类似于 +1d 的操作 - 几个小时。我检查了我的系统时间,看看是否是问题所在,但我的系统时间是正确的。然后我打印出 cookie,我得到了这个:
Actual Time of cookie creation: 6/4/2012 12:10:02 PM
COOKIE: session_id=534fec49c864d8cf0325779b0921b6be1338829802484; path=/; expires=Tue, 05-Jun-2012 17:10:02 GMT
上面的诡异之处在于,我使用 perl 的“localtime(time())”函数记录了 cookie 创建的实际时间,但它记录的时间与我的 date 命令输出的时间不同(所以不是实际的当前时间)!然后cookie上的过期时间实际上是正确的,但是它在错误的时区。
date
因此,当我运行命令时,我的服务器位于东部时区:
Mon Jun 4 12:05:12 EST 2012
但是,cookie 设置为 GMT 作为时区,我认为这是问题所在。除了 just 之外,还有其他时间我应该在服务器上设置date
吗?如果有帮助的话,我正在 CentOS 5 上运行。谢谢!