Cookieの有効期限を指定できるMax-Ageヘッダーがあります。残念ながら、Internet Explorer 6,7,8は、おそらくMax-Ageをサポートしておらず、ExpiresヘッダーにGMTの絶対日付を必要とします。Set-Cookie:Expireプロパティ、Clock Skew、Internet Explorerの問題
GMT時刻とTZ設定が特定のクライアントで間違っていることは珍しくありません。自分のタイムゾーンを正しく定義しておらず、時計を手動で調整したユーザーを考えてみましょう。
それ以上のことがあると、時には、ユーザーが気づいていない多くの分の重大なクロックスキューが発生することがあります。
そのような場合、GMT時間は数時間にシフトすることがあります。効果的にはサーバーからのいずれかの短い有効期限を必要とするのCookieを設定することを防止します。 TZが間違っていれば、最大10才のクッキーが決して設定されないと考えてください。この問題を解決する方法について
オリジナルのアイデア(それが仕事をしたり、問題ありません):もちろん
- 最高の最大エイジを使用したり、すべてのブラウザが期限切れ」無視するとして、両方を指定することです"部分 - それはIEで動作しません
- 私は考えて別の方法は、日付:ヘッダーうまくいけばIEは、クロックスキューを回避するために違いを計算することを知っているだろう...しかし、それはIEに役立ちません。
- (JavaScriptを使用して)リクエスト時にクライアントから時刻を取得し、クロック差を計算し、必要に応じてExpireヘッダーを調整します。ただし、サーバーに時間を送信するなど、複雑なデータ操作が必要です。
質問:
- IEでクッキーのための時間を期限切れに処理するために最善かつ一般的な方法は何ですか?
- あなたは誰とアプリケーション
_説明された条件の下で解決するのが難しい "_最長10分間のクッキーを考えてください。私はむしろ_server-side_時間を値が有効と見なされるまでクッキーに保存したい(そしてそれは長い時間枠のために設定する) - あなたがまだそのクッキーを受け取ったときにサーバー側をチェックすることができる何かのためにその価値を使用したいと思っていますか... – CBroe
私は10分がちょっとしたことを理解しています。しかし、たとえ30分が必要な場合でも、それでも大きな問題になる可能性があります。 – Artyom
一般的に、セッションクッキーを設定するのは、ブラウザが終了するまで続きます。または、クッキーを有効期限の日または年に設定して将来的にタイムゾーンの問題には問題はありません。 –