src*_*ulo 3 cookies perl time timezone
所以我使用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";
Run Code Online (Sandbox Code Playgroud)
并且cookie在浏览器中设置,唯一的问题是时间与我放置的到期日期不匹配.例如,如果我将+ 1d用于到期日期,它确实会像+ 1d那样 - 几个小时.我检查了系统时间,看看是不是问题,但我的系统时间是正确的.然后我打印出饼干,我得到了这个:
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
Run Code Online (Sandbox Code Playgroud)
上面的结果是我用perl的'localtime(time())'函数记录了cookie创建的实际时间,但它记录的时间与我的date命令输出的时间不同(所以不是实际的当前时间)!然后cookie上的到期时间实际上是正确的,但它在错误的时区.
所以当我运行date命令时,我的服务器位于东部时区:
Mon Jun 4 12:05:12 EST 2012
Run Code Online (Sandbox Code Playgroud)
但是,使用GMT作为时区设置cookie,我认为这是问题所在.还有另外一次我应该在服务器上设置date吗?我在CentOS 5上运行,如果这有帮助的话.谢谢!
这些时间实际上相当(东部时间12:00是格林尼治标准时间17:00).请注意,规范要求cookie以GMT指定到期时间.反过来,您的浏览器需要自动转换时区.
用这么多的话说:一切都在发生.
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |