जावास्क्रिप्ट के साथ केवल सत्र कुकीज़


84

मैं सोच रहा था कि क्या जावास्क्रिप्ट के साथ केवल कुकीज सत्र बनाना संभव है। जब ब्राउज़र बंद हो जाता है तो कुकीज़ को हटा दिया जाना चाहिए।

मैं सर्वर पर कुछ भी उपयोग नहीं कर सकता क्योंकि वेबसाइट केवल HTML है ... इसलिए सर्वर साइड स्क्रिप्ट का उपयोग नहीं किया जाता है।

मैंने इसके बारे में यहाँ कुछ पढ़ा: http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/ लेकिन मुझे इस बारे में कोई और जानकारी नहीं मिल सकती है ... इसलिए मैं था सोच रहा था कि क्या यह तरीका विश्वसनीय है।

जवाबों:


136

हां यह सही है।

एक expiresहिस्सा नहीं डालने से एक सत्र कुकी बन जाएगी, चाहे वह जावास्क्रिप्ट में बनाई गई हो या सर्वर पर।

Https://stackoverflow.com/a/532660/1901857 देखें


यह मेरे लिए काम नहीं करता है और कई तरीकों से कोशिश की गई है ... शायद यह जवाब पुराना है।
दान

@Dan सत्र कुकीज़ सक्षम विन्यास के मामले में काम नहीं करता है: "जारी रखें जहां आपने छोड़ा था" ब्राउज़र में। उस स्थिति में ब्राउज़र बंद होने के बाद सत्र कुकीज़ को नष्ट नहीं करेगा।
तरुण सरिबेकेन

@TaronSaribekyan आप सही हैं, लेकिन आपको अपनी वेबसाइट के सभी उपयोगकर्ताओं को "जहाँ आपने छोड़ दिया है, जारी रखें" को अक्षम करने के लिए पूछना होगा। इसके बजाय सेशनस्टोरेज ने सभी ब्राउज़रों में सीधे काम किया।
दान

50

sessionStorageइस मामले में एक सरल समाधान का उपयोग करना होगा :

var myVariable = "Hello World";

sessionStorage['myvariable'] = myVariable;

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

हालांकि, ध्यान रखें कि sessionStorageसब कुछ एक स्ट्रिंग के रूप में बचाता है, इसलिए जब सरणियों / वस्तुओं के साथ काम करते हैं, तो आप उन्हें स्टोर करने के लिए JSON का उपयोग कर सकते हैं:

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

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

एक पेज सत्र तब तक चलता है जब तक ब्राउज़र खुला रहता है और पेज रीलोड और रीस्टोर पर बच जाता है। एक नया टैब या विंडो में एक पेज खोलने से एक नया सत्र शुरू होगा।

इसलिए, जब आप पृष्ठ / टैब बंद करते हैं, तो डेटा खो जाता है।


1
हां, इस उपयोग के लिए सत्र भंडारण सबसे अच्छा विकल्प है।
जूलियन लाफोंट

11
वास्तव में अब मैं सत्र भंडारण का उपयोग कर रहा हूं ... लेकिन जाहिरा तौर पर जब आप क्रोम और फायरफॉक्स में एक नया टैब खोलते हैं, तो आप सत्र भंडारण में आपके द्वारा संग्रहीत सामान तक नहीं पहुंच सकते हैं ... इसलिए मैं सत्र कुकीज़ को देख रहा था: कोड। google.com/p/chromium/issues/detail?id=165452
दान पोरन

उस मामले में, कुकीज़ विश्वसनीय होनी चाहिए, हालांकि मुझे नहीं पता कि वे कितनी अच्छी तरह से समर्थित हैं।
सेरेब्रस

2
सत्र (और स्थानीय) संग्रहण समान-मूल-नीति से प्रभावित होते हैं, इसलिए यदि आप http से https पर स्विच करते हैं, तो आपके पास http (और वीज़ा-वर्सा) में संग्रहीत सामग्री तक पहुंच नहीं है
जेफ लोवी

2
मुझे लगता है कि SessionStorageकेवल client-onlyसर्वर-साइड पर इन मूल्यों तक किसी भी पहुंच के बिना एक समाधान प्रदान करता है । ASP.Net और PHP जैसे कई सर्वर-साइड चौखटे में, हम ग्राहक-साइड वैल्यूज़ को आसानी से एक्सेस करना चाहते हैं, जिसे हमने छिपे हुए फ़ील्ड्स आदि का उपयोग किए बिना संग्रहीत किया हो, और फिर कुकीज़ एक बेहतर समाधान बन जाते हैं क्योंकि कुकीज़ स्वचालित रूप से भेजे जाते हैं। सर्वर साइड।
सुनील

9

केवल जावा स्क्रिप्ट के साथ सत्र बनाने के लिए, आप निम्नलिखित का उपयोग कर सकते हैं। यह मेरे लिए काम करता है।

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

फिर निम्नलिखित के रूप में कुकी मूल्य प्राप्त करें

 //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 "";
}

IE का समर्थन करने के लिए ठीक है हम पूरी तरह से "एक्सपायर" छोड़ सकते हैं और इसका उपयोग कर सकते हैं

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

4
समाप्ति में = IE में 0 बिल्कुल भी कुकी सेट नहीं करता है: blog.lysender.com/2011/08/…
JDandChips

1
expires = "" IE में काम करता है, और आपको कुकी की समाप्ति को सत्र में रीसेट करने की अनुमति देता है, अगर आपने इसे आसानी से सेट किया है
koolunix

1

सेटअप सत्र कुकी के लिए नीचे दिए गए कोड का उपयोग करें, यह ब्राउज़र बंद होने तक काम करेगा। (सुनिश्चित करें कि टैब बंद न हो)

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');
  }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.