web-dev-qa-db-ja.com

有効期限付きのJavaScriptセットCookie

JavascriptでCookieを設定していますが、正常に機能していますが、指定した有効期限はかかりません。それは、私が何を与えるかに関係なく、セッション値を取り続けます。以下は here から取ったコードです

var now = new Date();
var time = now.getTime();
var expireTime = time + 1000*60;
now.setTime(expireTime);
var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires='+now.toGMTString()+';path=/';

ハードコードされた値を指定しようとしましたが、chrome devツールでセッションとして期限切れを示しています

var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires='+tempExp+';path=/';

私が間違っていることを知っていますか?

50
antnewbee

大丈夫だと思います。時間を1000 * 36000に設定しました。

function display() { 
  var now = new Date();
  var time = now.getTime();
  var expireTime = time + 1000*36000;
  now.setTime(expireTime);
  var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
  document.cookie = 'cookie=ok;expires='+now.toGMTString()+';path=/';
  //console.log(document.cookie);
}

expiration

40
polin

別のアプリケーションを作成した関数を次に示します。再利用してください:

function writeCookie (key, value, days) {
    var date = new Date();

    // Default at 365 days.
    days = days || 365;

    // Get unix milliseconds at current time plus number of days
    date.setTime(+ date + (days * 86400000)); //24 * 60 * 60 * 1000

    window.document.cookie = key + "=" + value + "; expires=" + date.toGMTString() + "; path=/";

    return value;
};
21
Johnny Leung

以下は、Cookieを作成および削除するためのコードスニペットです。 Cookieは1日に設定されます。

// 1 Day = 24 Hrs = 24*60*60 = 86400.
  1. Max-ageを使用して:

    • Cookieの作成
    document.cookie = "cookieName=cookieValue; max-age=86400; path=/;";
    
    • Cookieの削除
    document.cookie = "cookieName=; max-age=- (any digit); path=/;";
    
  2. 有効期限を使用して:

    • 1日のCookieを作成するための構文
    var expires = (new Date(Date.now()+ 86400*1000)).toUTCString();
    document.cookie = "cookieName=cookieValue; expires=" + expires + 86400) + ";path=/;"
    
14
user8640104
document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";

1年の値を設定します。

6
Bhupsa

次のように使用します( source ):

function setCookie(c_name,value,exdays)
{

var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie = c_name+"="+c_value+"; path=/";
}
4
Mark Zer

Polinの答えを2回目にしたいと思います。このコードは、特定のCookieの有効期限を設定するために確かに機能します。発生する可能性のある問題の1つは、Chromeを使用し、「 http:// localhost ...」または「file://」、ChromeはCookieを保存しません。これを簡単に修正するには、単純なhttpサーバー(まだ持っていない場合はノードのhttpサーバーなど)を使用し、「 http://127.0.0.1 」と明示的にページに移動します。 case Chromeは、ローカル開発用のCookieを保存します。これをやらないと、コンソールまたはDev Toolsで調査すると、expiresキーの値が「セッション」になります。

2
pmccaffrey6