web-dev-qa-db-ja.com

有効期限のないJavascript Cookie

有効期限が切れないCookieを設定したいと思います。それも可能でしょうか?

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

日付を本当に大きくしたくありません。Cookieのexpiresパラメータの値が、決して期限切れにならないことを通知しているのかどうか疑問に思っています。

ありがとう。

122
Jose Vega

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

140

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

95
Jamie

Mozilla docs の例として実行できます。

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

P.S

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

52
Nimir

すべてのCookieはCookieに従って期限切れになります 仕様 、設定できる最大値は

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

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

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

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

8
Liam Martens

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

8

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

January 2038を超える日付は、Cookie(32-bit int)によって運命づけられることに注意してください。それが近い将来に修正されるという奇跡を願っています。 64-bit intの場合、2110前後の年は安全です。時間が経つにつれて、ソフトウェアとハ​​ードウェアは変化し、古いもの(現在のもの)には決して適応しない可能性があるため、nowを準備して未来に向けて

2038年問題 を参照

1
rhavendc

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

1
jfhfhf839

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

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