Javascript ile yalnızca oturum çerezleri


84

Javascript ile sadece oturum çerezleri oluşturmanın mümkün olup olmadığını merak ediyordum. Tarayıcı kapatıldığında çerezler kaldırılmalıdır.

Web sitesi yalnızca HTML olduğu için sunucuda hiçbir şey kullanamıyorum ... bu nedenle sunucu tarafı komut dosyası kullanılmıyor.

Burada bununla ilgili bir şey okudum: http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/ ancak bununla ilgili daha fazla bilgi bulamıyorum ... bu yüzden bu yöntemin güvenilir olup olmadığını merak ediyorum.

Yanıtlar:


136

Evet doğru.

Bir expiresparçanın yerleştirilmemesi , ister JavaScript'te ister sunucuda oluşturulmuş olsun, bir oturum çerezi oluşturacaktır.

Bkz. Https://stackoverflow.com/a/532660/1901857


Benim için işe yaramıyor ve birçok yönden denedi ... Belki bu cevap modası geçmiş.
Dan

@Dan Oturum çerezleri, tarayıcıda yapılandırma: "Kaldığınız yerden devam edin" etkin olduğunda çalışmaz. Bu durumda tarayıcılar kapattıktan sonra oturum çerezlerini yok etmeyecektir.
Taron Sarıbekyan

@TaronSaribekyan haklısınız, ancak web sitenizin tüm kullanıcılarından "Kaldığınız yerden devam edin" yapılandırmasını devre dışı bırakmalarını istemelisiniz. Bunun yerine, sessionStorage tüm tarayıcılarda hemen çalıştı.
Dan

50

sessionStorageBu durumda daha basit bir çözüm kullanmak olacaktır :

var myVariable = "Hello World";

sessionStorage['myvariable'] = myVariable;

var readValue = sessionStorage['myvariable'];
console.log(readValue);

Bununla birlikte, sessionStorageher şeyi bir dize olarak kaydettiğini unutmayın , bu nedenle dizilerle / nesnelerle çalışırken bunları depolamak için JSON kullanabilirsiniz:

var myVariable = {a:[1,2,3,4], b:"some text"};

sessionStorage['myvariable'] = JSON.stringify(myVariable);
var readValue = JSON.parse(sessionStorage['myvariable']);

Bir sayfa oturumu, tarayıcı açık olduğu ve sayfa yeniden yüklemeleri ve geri yüklemeleri üzerine hayatta kaldığı sürece sürer. Yeni bir sekme veya pencerede bir sayfa açmak, yeni bir oturumun başlatılmasına neden olacaktır.

Yani sayfayı / sekmeyi kapattığınızda veriler kaybolur.


1
Evet, bu kullanım durumu için en iyi seçim oturum saklama.
Julien Lafont

11
aslında şimdi oturum depolamasını kullanıyorum ... ama görünüşe göre chrome ve firefox'ta yeni bir sekme açtığınızda, oturum depolamasında sakladığınız şeylere erişemiyorsunuz ... bu yüzden oturum tanımlama bilgilerine bakıyordum: kod. google.com/p/chromium/issues/detail?id=165452
Daan Poron

Bu durumda, ne kadar iyi desteklendikleri hakkında hiçbir fikrim olmasa da, çerezler güvenilir olmalıdır.
Cerbrus

2
Oturum (ve Yerel) depolama, http saklanan şeylere erişimi olmayan https http geçiş eğer öyleyse, aynı-Origin-Politikası etkilenen (ve vize tersi) olan
Jeff Lowery

2
Sanırım SessionStoragesadece client-onlysunucu tarafında bu değerlere erişim olmadan bir çözüm sağlıyor. ASP.Net ve PHP gibi birçok sunucu tarafı çerçevede, gizli alanlar vb. Kullanmadan saklamış olabileceğimiz istemci tarafı değerlerine kolayca erişmek istiyoruz ve daha sonra çerezler otomatik olarak sunucu tarafı.
Paz

9

Yalnızca java komut dosyasıyla oturum tanımlama bilgisi oluşturmak için aşağıdakileri kullanabilirsiniz. Bu benim için çalışıyor.

document.cookie = "cookiename=value; expires=0; path=/";

sonra aşağıdaki gibi çerez değerini alın

 //get cookie 
var cookiename = getCookie("cookiename");
if (cookiename == "value") {
    //write your script
}

//function getCookie        
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
    }
    return "";
}

Tamam, IE'yi desteklemek için "süresinin dolmasını" tamamen bırakabiliriz ve bunu kullanabiliriz

document.cookie = "mtracker=somevalue; path=/";

4
IE'de expires = 0 hiç bir tanımlama bilgisi ayarlamaz: blog.lysender.com/2011/08/…
JDandChips

1
expires = "" IE'de çalışır ve açık bir şekilde ayarladıysanız, bir çerezin süresinin dolmasını Oturum olarak sıfırlamanıza izin verir
koolunix

1

Bir kurulum oturumu tanımlama bilgisi için aşağıdaki kodu kullanın, tarayıcı kapanana kadar çalışacaktır. (sekmeyi kapatmadığınızdan emin olun)

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  }
  function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == ' ') {
        c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
        return c.substring(name.length, c.length);
      }
    }
    return false;
  }
  
  
  if(getCookie("KoiMilGaya")) {
    //alert('found'); 
    // Cookie found. Display any text like repeat user. // reload, other page visit, close tab and open again.. 
  } else {
    //alert('nothing');
    // Display popup or anthing here. it shows on first visit only.  
    // this will load again when user closer browser and open again. 
    setCookie('KoiMilGaya','1');
  }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.