4

Google Chrome で寿命の短い Cookie を設定できないようです。それらは設定されていないか、すぐに削除されています (どちらの方法でも結果は同じですが、どちらかはわかりません)。これは、有効期限が 4 時間以内の場合にのみ発生します。有効期限が 4 時間より長く、Firefox または Safari で問題が発生しない場合、同一のコードは正常に機能します。次に例を示します。

動作しません:

exp = new Date();
exp.setMinutes(exp.getMinutes() + 240);
document.cookie="name=value;expires=" + exp + ";path=/";

作品:

exp = new Date();
exp.setMinutes(exp.getMinutes() + 241);
document.cookie="name=value;expires=" + exp + ";path=/";

これを解決する方法について何か提案はありますか?

4

2 に答える 2

3

実際、私はここで Chromium ソースをチェックアウトしましたhttp://code.google.com/p/chromium/source/search?q=document.cookie+expire&origq=document.cookie+expire&btnG=Search+Trunkを参照して Cookie を参照し、それらのすべての expires= ステートメントは、日付オブジェクトで .toGMTString() または .toUTCString() のいずれかを呼び出すため、明示的に設定するのではなく、暗黙的にフォーマットに変換すると、独特の日付フォーマット関数が台無しになる可能性があります.?!

これの代わりに:

document.cookie="name=value;expires=" + exp + ";path=/";

これを試して:

document.cookie="name=value;expires=" + exp.toUTCString() + ";path=/";
于 2012-08-09T18:57:00.290 に答える
1

jQuery.cookieを使用して私のために働くようです:

Command: exp = new Date()
Output: Thu Aug 09 2012 11:39:21 GMT-0700 (Pacific Daylight Time)

Command: exp.setMinutes(exp.getMinutes() + 240)
Output: 1344551961739

Command: $.cookie('testCookie', 'test', {path: '/', expires: exp});
Output: "testCookie=test; expires=Thu, 09 Aug 2012 22:39:21 GMT; path=/"

これは、Windows 上の Chrome のコンソールで行われました。

注: GMT の 22:39 は GMT -0700 の 15:39 であるため、有効期限は 4 時間です。

編集: コードを直接テストしましたが、4 時間以内に有効期限が切れるように設定されている Cookie を受け入れないようです。これはjQueryを使用しません:

exp = new Date();
exp.setMinutes(exp.getMinutes() + 240);
document.cookie="testCookie2=test;expires=" + exp.toUTCString() + ";path=/";
于 2012-08-09T18:44:19.750 に答える