La sessione e l'archiviazione locale sono metodi di archiviazione del browser che consentono di archiviare i dati insieme a richieste HTTP stateless. Sono un'alternativa alla memorizzazione basata sui cookie e hanno molti usi nello sviluppo web.
Sebbene funzionino in modo molto simile, ci sono differenze significative di cui dovresti essere a conoscenza.
Archiviazione locale e archiviazione di sessione: quali sono i loro usi?
L'archiviazione locale e di sessione sono API JavaScript che puoi utilizzare per archiviare i dati sul lato client. Consentono a un sito Web di memorizzare dati sul browser e istruiscono il browser ad accedervi in seguito.
A seconda delle tue esigenze, puoi utilizzare l'archiviazione locale o di sessione per archiviare i dati. Entrambi i metodi di memorizzazione sono simili ai cookie ma senza le stesse preoccupazioni sulla privacy relative ai cookie. Pertanto, la maggior parte dei siti Web moderni preferisce utilizzare solo metodi di archiviazione Web o combinarli con i cookie come ripiego.
A differenza dei cookie, l'archiviazione locale e l'archiviazione di sessione non inviano dati al server tramite intestazioni HTTP. Dovresti usarli solo per la funzionalità lato client.
Inoltre, l'archiviazione locale e quella di sessione hanno ciascuna un limite di archiviazione di circa 5 MB per dominio. Forniscono più spazio di archiviazione rispetto ai cookie, che hanno solo una capacità di 4 KiB per cookie.
Che cos'è l'archiviazione delle sessioni?
Una sessione di navigazione approssima l'utilizzo di un sito web. Se visiti un sito, navighi un po', quindi spegni il computer, puoi pensare a quel momento come a una singola sessione. La configurazione del tuo browser può modificarlo in modi impercettibili, ma una sessione mira a rappresentare la parte di tempo in cui interagisci con un sito.
L'archiviazione della sessione è univoca per ciascuna scheda del browser. Se apri una nuova scheda e accedi allo stesso sito, avvierai una nuova sessione con il proprio spazio di archiviazione. Tuttavia, se utilizzi una funzione "scheda duplicata" nel tuo browser, questa potrebbe riutilizzare la stessa sessione. Non puoi fare troppo affidamento sui dettagli specifici di una "sessione". Invece, concentrati sul concetto fondamentale: l'archiviazione delle sessioni è temporanea.
L'archiviazione di sessione ha metodi API integrati per lavorare con i dati della coppia chiave/valore. È possibile memorizzare i dati da JavaScript così:
sessionStorage.setItem("chiave", "valore");
E per recuperare il valore memorizzato:
sessionStorage.getItem("chiave");
Nota che entrambi chiave e valore sono solo tipi di stringa. Se desideri archiviare un tipo diverso, dovrai convertirlo in una stringa, in modo esplicito o implicito.
Che cos'è l'archiviazione locale?
L'archiviazione locale conserva i dati in tutte le istanze di un sito, indipendentemente dal fatto che si trovino in schede o finestre diverse. È anche permanente, quindi i dati non scompaiono quando chiudi il browser.
Quando apri un sito Web che in precedenza utilizzava l'archiviazione locale, avrà sempre accesso ai dati archiviati.
In qualità di sviluppatore web, puoi utilizzare questo meccanismo per conservare i dati su un utente. Alcuni siti Web potrebbero utilizzarlo per mantenerti connesso o per fornire un'esperienza più personalizzata.
Come l'archiviazione della sessione, puoi impostare un oggetto di archiviazione locale con una riga di codice JavaScript:
localStorage.setItem("chiave", "valore");
Per accedere al valore della chiave:
localStorage.getItem("chiave");
Si noti che questi metodi funzionano allo stesso modo dell'archiviazione di sessione, utilizzano solo un tipo diverso di archivio dati.
Sebbene l'archiviazione della sessione cancelli i dati non appena la sessione termina, l'unico modo per cancellare l'archiviazione locale è eliminarla esplicitamente. Entrambi i tipi di archiviazione offrono due metodi per cancellare i dati. Il primo rimuove un dato specifico in base alla sua chiave:
localStorage.removeItem("chiave");
Puoi anche rimuovere tutti i dati memorizzati dal tuo sito, indipendentemente dalla sua chiave:
localStorage.clear();
Puoi saperne di più su questi metodi API di archiviazione web su javascript.info sito web.
Quando hai bisogno di archiviazione locale?
Poiché l'archiviazione locale è persistente, è meglio conservare i dati durante le visite degli utenti. Se desideri archiviare le preferenze del sito o memorizzare nella cache i dati a lungo termine, l'archiviazione locale è appropriata. Potresti non voler archiviare dati più sensibili utilizzando l'archiviazione locale, poiché è permanente.
Poiché l'archiviazione locale e di sessione sono metodi front-end, potresti voler evitare di usarli per funzioni basate su server come l'accesso utente. Potresti considerare i cookie come un'alternativa in questi casi.
Quando hai bisogno dell'archiviazione delle sessioni?
Se desideri archiviare i dati solo mentre un utente interagisce con il tuo sito, l'archiviazione della sessione è l'ideale. Potrebbe trattarsi di una memorizzazione nella cache a breve termine o di dati sull'utilizzo di una visita specifica al tuo sito.
L'archiviazione della sessione è migliore per archiviare informazioni più sensibili poiché scadono.
Archiviazione locale vs. Archiviazione delle sessioni: quale è più sicuro?
Come hai visto, i metodi di archiviazione locale e di sessione sono simili in molti modi, ma hanno ancora casi d'uso personalizzati. Non dovresti considerarle sicure poiché sono tecnologie front-end a cui JavaScript ha accesso. Tuttavia, l'archiviazione delle sessioni è molto conveniente e la sua natura temporanea è rassicurante.
L'archiviazione locale è permanente, quindi potrebbe porre ulteriori problemi di sicurezza. Chiunque apra un browser può, in teoria, accedere alla memoria locale. Dovresti essere consapevole come funzionano gli attacchi XSS e come prevenirli.
Archiviazione locale o archiviazione di sessione: quale utilizzare?
L'archiviazione delle sessioni è leggermente più sicura a causa della sua natura temporanea. Tuttavia, la scelta del metodo di archiviazione web dipende dalle tue esigenze. L'archiviazione JavaScript è più adatta solo per l'uso lato client. Ma offre un comodo archivio dati basato su browser ed è molto facile da usare.
Ricorda che mentre l'archiviazione locale archivia i dati in diverse schede, l'archiviazione di sessione è univoca per ciascuna scheda, per la maggior parte. Dovresti assicurarti che la tua app faccia il minor numero possibile di ipotesi e soddisfi i casi limite.
I cookie sono una forma più vecchia di persistenza dei dati, ma sono ancora molto utilizzati. Potresti voler controllarli per i dati che devi trasmettere al server.