有効期限のないJavascript Cookie


142

有効期限のないクッキーを設定したいのですが。それは可能でしょうか?

 document.cookie = "name=value; expires=date; path=path;domain=domain; secure";

日付を実際に大きくしたくはありません。Cookieの期限切れパラメーターに、期限切れにならないように指示する値があったのかと思っています。

ありがとう。


1
日付を大きくしたくないですか?
AnthonyWJones 2009

13
日付を大きくすると、まるで浮気しているような気分になります。それが唯一の方法である場合、私は日付を大きくする必要があると思います。
ホセ・ベガ

回答:


169

いいえ。できません。それを行う「方法」は、有効期限を2030年のようにするだけです。


31
あと4年で終わります。Cookieを更新してください。
antony.ouseph.k 2016年

160
2020年-cookiepocalypseの
JeffreyPia

14
くそー、それは毎年近づいてきています。あなたのコードが更新されたことを願っています。
kartsims

22
現在は2030年に編集されており、さらに10年先の運命を先延ばしにしています
Simeon Nakov

7
...だから、基本的には、2038年1月19日に、チューイーミレニアム・ファルコンに座って、まだ再び銀河マップのAPI上のクッキーポリシーポップアップ文句を言う
nickhar

108

必要な構文はありません。有効期限を設定しないと、Cookieはセッションの終了時に期限切れになります。唯一のオプションは、任意の大きな値を選択することです。一部のブラウザでは、2038日を過ぎた日付で問題が発生することに注意してください(UNIXエポック時間が32ビット整数を超える場合)。


25
2038-01-19、03:14:08 UTC、正確には。
Wilhelm Klopp、2015年

ただ明確にするために:それはすべてのブラウザで同じように機能するルールですか?つまり、有効期限を設定しないと、Cookieはセッションの最後までしか持続しません。
シルバーリングビー16

2
Expiresor Max-Ageディレクティブなしで作成されたCookie はセッションCookieです。クライアントがシャットダウンすると削除されます。ただし、ウェブブラウザはセッションの復元を使用する場合があります。これにより、ブラウザが閉じられなかったかのように、ほとんどのセッションCookieが永続的になります。(ソース:MDN
mfluehr

67

あなたはMozilla docsの例として行うことができます:

 document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT";

PS

もちろん、人類が10000年の最初の分にもコードを使用している場合は問題が発生します:)


89
本当に金曜日ですか?
David


5
npmjs.com/package/universal-cookieを使用すると、私にはうまくいきませんでした2038年のソリューションと一緒に行きました。私は2030年に戻ってくるチケットを書いて、修正があるかどうかを確認しました。
Hinrich

15

すべてのCookieはCookie 仕様に従って有効期限が切れます。設定できる最大値は

 2^31 - 1 = 2147483647 = 2038-01-19 04:14:07

したがって、Cookieの最長有効期間は

$.cookie('subscripted_24', true, { expires: 2147483647 });

7
その数は私にはうまくいきませんでした。試行錯誤の末、私が使用できる最大の数は99983090(expires = Fri、12 Sep 275760 18:10:24 GMT)でした。それ以上の値は「無効な日付」を返しました
JeffreyPia

有効期限パラメーターとしてjquery-cookieまたはjs-cookieに数値を渡した場合、これは有効期限までの日数と見なされます。固定日付が必要な場合は、代わりにDateオブジェクトを渡す必要があります。
Dario Seidl

上記のコードは、js-cookieのために廃止されたjquery-cookieプラグインを使用しています。
イェンス

2
バニラJSの場合:document.cookie = 'subscripted_24=true; expires=' + new Date(2147483647 * 1000).toUTCString();
Oksana Romaniv

12

1か月程度の有効期限でCookieを設定し、ユーザーが再度WebサイトにアクセスするたびにCookieを再割り当てすることもできます


1
これは、無限のCookieを設定するための正しい答えです。また、ユーザーがサイトを決して閉じないことを考慮する必要がある場合は、何らかのアクションによって、または特定の時間の後にCookieを更新するための追加の条件を実装できます。
Alex Shink

9

有効期限を設定しない場合、Cookieはユーザーのセッションの終了時に期限切れになります。UNIXエポック時間が32ビット整数を超えて拡張される直前の日付を使用することをお勧めします。それをCookieに入れるには、が設定document.cookie = "randomCookie=true; expires=Tue, 19 Jan 2038 03:14:07 UTC;してrandomCookieいるCookie であり、trueそれがそれぞれの値であると仮定して、を使用します。


2

あなただけではできません。永久Cookieの設定に使用する正確なコードはありませんが、などの古いトリックで十分current time + 10 yearsです。

January 2038Cookie(32ビットのint)を超える日付を指定すると、すぐに削除されます。近い将来に修正される予定の奇跡を願っています。以下のために64ビットint、周りの年が2110安全になります。時間が経つにつれ、ソフトウェアとハ​​ードウェアは変化し、古いもの(現在のもの)に適応しない可能性があるため、将来に備えてを準備します

2038年問題を参照



@GustvandeWalでしょ?私はすでにそれを読みました。私もそのリンクを私の回答に含めました。
rhavendc 2017年

1
あなたの答えから:64ビットintの場合、2110年前後が安全です。これは、64ビットコンピューターが32ビットコンピューターの2倍の数になると予想しているように疑わしいようです(1970-> 2035-> 2110)
Gust van de Wal

@GustvandeWal私の言葉が不審に聞こえたら申し訳ありません。多分それは英語でそれを言うための最良の方法ではありません。しかし、ちょっと、私はあなたが今言ったそのような考えを期待も考えもしませんでした。
rhavendc 2017年

4
小さなメモ:33ビットプロセッサを使用する場合、2110年は理にかなっています。
hegez 2017

1

クライアント側からのみデータを読み取る場合は、ローカルストレージを使用できます。ブラウザのキャッシュがクリアされた場合にのみ削除されます。


または、ブラウザが閉じているか、コンピュータがシャットダウンしている
Redwolfプログラム

@RedwolfProgramsブラウザが閉じたりコンピュータがシャットダウンしたりすると、いつローカルストレージがクリアされるのですか?
IgorJerosimić19年

@IgorJerosimićおっと!私のサイトのバグが原因だったと思います...
Redwolfプログラム

-2

次のように、現在の年より1だけ多い日付に設定して、Cookieを終了しないようにすることができます。

var d = new Date();    
document.cookie = "username=John Doe; expires=Thu, 18 Dec " + (d.getFullYear() + 1) + " 12:00:00 UTC";

1
有効期限は1年であり、無期限ではありません(AFAIK)。
ソロモンウッコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.