短い質問:
サーバー上でセッションの有効期限が更新されたときに、ブラウザーでセッション Cookie の有効期限が更新されないのはなぜですか?
長い質問:
数週間前にこれについて同様の質問を投稿しましたが、その時点ではすべての事実を把握していませんでした. 詳細がわかり、質問の性質が変わったので、新しい質問として投稿します。
まず、CakePHP 2 で、APP/Config/core.php をセッション用に次のように設定しました。
Configure::write('Session', array(
'defaults' => 'database',
'cookie' => 'mycookie',
'timeout' => 1 // 1 minute - just for testing
));
そのため、アプリでデータベースにセッションを作成するページをロードします。これまでのところすべて順調です。
1341288066
セッションはに等しい期限切れになるようにスタンプされTue, 03 Jul 2012 04:01:06 GMT
ます。繰り返しますが、今から 1 分後なので、これは素晴らしいことです。まさに私が欲しかったもの。
Firefox の Cookie 画面を見ると、予想どおりの Cookie が見つかります。
Name: mycookie
Content: aqm0gkmjfsuqje019at8cgsrv3
Host: localhost
Path: /
Send for: Any type of connection
Expires: Tue 03 Jul 2012 11:01:06 AM ICT // (04:01:06 GMT)
この 1 分間のウィンドウ内で、アプリに戻ってページを更新します。次に、セッションが更新されているかどうかを確認します。それは、私が期待したものと等しい1341288122
セッションIDに対して表示されます。セッションの有効期限は、ページを最後にリロードしてから 1 分になるように更新されました。aqm0gkmjfsuqje019at8cgsrv3
Tue, 03 Jul 2012 04:02:02 GMT
残念ながら、ブラウザの Cookie はまだExpires: Tue 03 Jul 2012 11:01:06 AM ICT
(ie: 04:01:06 GMT
) に設定されており、まさにそれが機能します。つまり、次に更新を押すと、古いセッション ID がまだ技術的に有効であるにもかかわらず、Cake はまったく新しいセッション ID を生成します。
私の質問は、基本的にここで何が起こっているのですか? ブラウザーで Cookie が新しい有効期限で更新されないのはなぜですか?