Solo per la sessione cookie e Javascript

Mi chiedevo se è possibile creare una sessione cookie e Javascript. Quando il browser viene chiuso il cookie deve essere rimosso.

Che non posso usare nulla sul server, il sito è solo HTML … quindi non server side script è utilizzato.

Ho letto qualcosa su questo qui:
http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/
ma non riesco a trovare ulteriori informazioni su questo … quindi mi chiedevo se questo metodo è affidabile.

InformationsquelleAutor Daan Poron | 2013-01-07



3 Replies
  1. 40

    Una soluzione più semplice sarebbe quella di utilizzare sessionStorage, in questo caso:

    var myVariable = "Hello World";
    
    sessionStorage['myvariable'] = myVariable;
    
    var readValue = sessionStorage['myvariable'];
    console.log(readValue);

    Tuttavia, tenere a mente che sessionStorage salva tutto come una stringa, in modo che quando si lavora con matrici /oggetti, è possibile utilizzare JSON per memorizzare loro:

    var myVariable = {a:[1,2,3,4], b:"some text"};
    
    sessionStorage['myvariable'] = JSON.stringify(myVariable);
    var readValue = JSON.parse(sessionStorage['myvariable']);

    Una pagina di sessione dura per tutto il tempo come il browser è aperto, e che sopravvive oltre la pagina viene ricaricata e ripristini. L’apertura di una pagina in una nuova scheda o finestra causerà una nuova sessione per essere avviato.

    Così, quando si chiude la pagina /scheda, i dati sono persi.

    • Sì, Sessione di archiviazione è la scelta migliore per questo caso d’uso.
    • in realtà ora sto usando sessione di archiviazione … ma a quanto pare, quando si apre una nuova scheda in chrome e firefox non è possibile accedere alla roba che hai memorizzato nella sessione di archiviazione … ecco perché stavo guardando i cookie di sessione: code.google.com/p/chromium/issues/detail?id=165452
    • In questo caso, il cookie deve essere affidabile, anche se non ho idea di come ben supportati sono.
    • Inoltre, sessionStorage non funziona con IE a partire da questa data!
    • Sessione (e Locali di stoccaggio sono colpiti dalla Stessa Origine di Politica, quindi se si passa da http a https, non si dispone di accesso a roba memorizzati in http (e viceversa)
    • Penso SessionStorage solo fornisce una client-only soluzione, senza alcun accesso a questi valori sul lato server. In molti server-side di framework come ASP.Net e PHP, vorremmo facilmente accedere al client-side valori che ci possono essere memorizzati senza l’utilizzo di campi nascosti ecc…. e poi i cookie diventare una soluzione migliore in quanto i cookie vengono automaticamente inviati al server-side.
    • lontano dalle più semplici, soprattutto quando ci sono casi in cui non funziona. Poi si lancia in JSON anche. Questo è semplice: il documento.cookie = ‘cookiname=cookievalue; path=/; domain=google.com; ‘;
    • Cosa non è il più semplice, è quello di ottenere un valore complesso da quel cookie. JSON stringify / analizzare è un pezzo di torta rispetto a quella.
    • SessionStorage è impressionante, ma anche attualmente rotto per iOS Safari in modalità Privata (o con alcune impostazioni di sicurezza impostato in modo non corretto). Non so se è rotto da una decisione di progettazione da parte di Apple, però. (spin.atomicobject.com/2013/01/23/…)
    • Come hai fatto a modificare che il preventivo migliore, in qualche modo?
    • perché qualcuno di leggere la tua risposta (e non sapendo la differenza tra i cookie di sessione e sessionStorage) può avere l’impressione che una “sessione” si comporta sempre nello stesso modo, mentre in realtà i cookie di sessione verranno mantenute tra schede e finestre dello stesso dominio, in modo da aggiornare la citazione sarebbe la tua risposta completa.
    • Non senza spiegare come il comportamento è diverso.
    • La tua risposta è buona. La mia modifica è stato un suggerimento di come fare ancora meglio 🙂 IMHO, è potrebbe un po ‘ di confusione ora, ma io non insisto, è la vostra risposta.
    • i dati non possono essere recuperati dalla sessione di archiviazione, se c’è di nuovo il reindirizzamento ad una pagina diversa.

  2. 6

    Per la creazione di una sessione cookie con java script, è possibile utilizzare il seguente. Questo funziona per me.

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

    quindi ottenere il valore del cookie come segue

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

    Va bene per il supporto di IE possiamo lasciare “scade” completamente e possibile utilizzare questo

    document.cookie = "mtracker=somevalue; path=/";
    • expires=0 in IE non impostare un cookie: blog.lysender.com/2011/08/…
    • expires=”” funziona in IE, e consente di reimpostare la scadenza di un cookie di Sessione, se si dispone esplicitamente impostato

Lascia un commento