88

Javascript で Cookie を設定していますが、正常に動作していますが、有効期限が切れていません。私が与えたものに関係なく、セッション値を取得し続けます。以下は、ここから取得したコードです

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 開発ツールでセッションとして期限切れが表示されます

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

私が間違っていることは何ですか?

4

8 に答える 8

78

時間を 1000*36000 に設定しました。

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

有効期限

于 2012-10-31T11:22:23.543 に答える
26

これは私が別のアプリケーションを書いた関数です。自由に再利用してください:

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;
};
于 2012-10-31T18:17:31.523 に答える
4

次のように使用します ( 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=/";
}
于 2012-10-31T09:23:21.307 に答える
3

ポーリンの答えを2番目にしたいと思います。まだ行き詰まっている場合に備えて、1つだけ追加してください。このコードは確かに、特定の Cookie の有効期限を設定するために機能します。Chrome を使用していて、" http://localhost ..." または "file://"経由でページにアクセスしている場合、Chrome は Cookie を保存しないという問題が発生する可能性があります。これを簡単に修正するには、単純な http サーバー (まだ使用していない場合はノードの http サーバーなど) を使用し、「http://127.0.0.1」として明示的にページに移動します。この場合、Chrome はローカルの Cookie を保存します。発達。これを行わないと、コンソールまたは開発ツールで調査したときに、失効キーの値が単に「セッション」になるため、少し電話を切りました。

于 2016-03-16T14:59:43.637 に答える