3

だから私は Perl の CGI モジュールを使用してクッキーを作成しています。

my $cookie = CGI::Cookie->new(-name    =>  "$name",
                         -value   =>  "$val",
                         -expires =>  "$expiration_date",
                         -path    =>  $cookie_path,
                         -secure  =>  0
                        );

print "Set-Cookie: $cookie\n";

そして、クッキーはブラウザに設定されていますが、唯一の問題は、時間と私が入れた有効期限が一致しないことです。たとえば、有効期限に +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

ただし、タイムゾーンとして GMT を使用して Cookie が設定されており、これが問題だと思います。だけでなく、サーバーに設定する必要がある別の時間はありますdateか? それがまったく役立つ場合、私はCentOS 5で実行しています。ありがとう!

4

2 に答える 2

6

これらの時間は実際には同じです (12:00 EST は 17:00 GMT)。仕様では、有効期限を GMT で指定するには Cookie が必要であることに注意してください。ブラウザは、タイム ゾーンを自動的に元に戻す必要があります。

一言で言えば、すべてが正常に行われているということです。

于 2012-06-04T21:31:13.197 に答える
4
しかし、それは私のdateコマンドが出力するものとは異なる時間を記録します

それは真実ではない。

Tue, 05-Jun-2012 17:10:02 GMT

Tue, 05-Jun-2012 12:10:02 EST

まったく同じ時間の異なる表現です。大丈夫。持ってたら問題あった

Tue, 05-Jun-2012 17:10:02 EST

また

Tue, 05-Jun-2012 12:10:02 GMT

しかし、あなたはしませんでした。

GMT が使用されるのは、"EST" があいまいなためです。オーストラリアには同じ名前のタイム ゾーンがあります。また、すべての人が GMT を使用する場合、すべてのタイム ゾーンを知る必要があるのではなく、1 つのタイム ゾーンだけを知る必要があるためです。

于 2012-06-04T21:43:47.490 に答える