it-swarm.com.de

Session nur Cookies mit Javascript

Ich habe mich gefragt, ob es möglich ist, nur Sitzungscookies mit Javascript zu erstellen. Wenn der Browser geschlossen ist, sollten die Cookies entfernt werden.

Ich kann auf dem Server nichts verwenden, da die Website nur HTML ist. Daher wird kein serverseitiges Skript verwendet.

Ich habe hier etwas darüber gelesen: http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/ aber ich kann keine weiteren Informationen über finden Das ... also habe ich mich gefragt, ob diese Methode zuverlässig ist.

65
Daan Poron

Ja, das ist richtig.

Wenn Sie kein expires -Teil einfügen, wird ein Sitzungscookie erstellt, unabhängig davon, ob es in JavaScript oder auf dem Server erstellt wird.

Siehe https://stackoverflow.com/a/532660/1901857

116
Rhumborl

Eine einfachere Lösung wäre die Verwendung von sessionStorage in diesem Fall:

var myVariable = "Hello World";

sessionStorage['myvariable'] = myVariable;

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

Beachten Sie jedoch, dass sessionStorage alles als Zeichenfolge speichert. Wenn Sie also mit Arrays/Objekten arbeiten, können Sie sie mit JSON speichern:

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

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

Eine Seitensitzung dauert so lange, wie der Browser geöffnet ist und überlebt das Neuladen und Wiederherstellen von Seiten. Wenn Sie eine Seite in einem neuen Tab oder Fenster öffnen, wird eine neue Sitzung gestartet.

Wenn Sie die Seite/Registerkarte schließen, gehen die Daten verloren.

40
Cerbrus

Für das Erstellen von Session-Only-Cookies mit Java Skript können Sie Folgendes verwenden. Dies funktioniert bei mir.

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

dann erhalten Sie den Cookie-Wert wie folgt

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

Okay zu unterstützen IE wir können "abläuft" komplett lassen und können dies nutzen

document.cookie = "mtracker=somevalue; path=/";
6
Gaurav Agarwal