I cookies

Argomenti trattati: la sessione di lavoro, creazione e gestione di un cookie.

Ogni volta che un utente accede ad un sito, esso inizia una sessione di lavoro nella quale vi sarà un continuo scambio di dati tra il client, il terminale dell'utente che si connette al servizio, ed il server, la macchina ove si trovano le pagine web e gli script che soddisferanno la richiesta dell'utente.

Lo scambio di dati su cui si basano i protocolli di rete, che permettono la comunicazione client-server, sono del tutto trasparenti all'utente finale. Vi può però essere per il programmatore la necessità di mantenere alcuni dati durante la sessione di lavoro.

Esistono modi differenti per rispondere a questa esigenza: ad esempio registrando le informazioni su una base dati, o semplicemente scrivendole su un file: in entrambi i casi, le informazioni permarranno sul server. JavaScript è però nato come linguaggio lato client, e non permette direttamente questa possibilità.

E' invece possibile registrare dei dati in un piccolo file di testo, definito cookie, che rimane nelle cartelle predefinite del terminale dell'utente finché non è rimosso oppure non scade la sua validità, come sarà spiegato in seguito.

Ogni volta che l'utente si collega di nuovo al sito in questione, è possibile leggere i dati precedentemente memorizzati nel file.

Ci sono alcune considerazioni da fare per capire le potenzialità dei cookies.

La prima è che, se non settato altrimenti, essi scadono alla fine della sessione dell'utente, ovvero quando esso si disconnette da quel certo sito e chiude il browser. E' però possibile impostare la scadenza del cookie tramite l'attributo expires.

Inoltre il cookie per default è visualizzabile soltanto dal sito che lo ha prodotto. Anche questa caratteristica può essere impostata dal programmatore, tramite le proprietà path e domain.

Un ulteriore attributo è secure, relativo al protocollo di sicurezza eventualmente utilizzato al posto dell'HTTP, ad esempio l'HTTPS.

Esistono dei limiti che rendono i cookie adatti a memorizzare pochi dati per un breve periodo. Infatti:

• Il browser è predisposto per mantenere un massimo di 300 cookie;

• Le coppie nome-valore in un cookie non dovrebbero superare i 4 Kb;

• Ogni sito dovrebbe utilizzare un massimo di 20 cookies.

Alcune caratteristiche relative alla gestione dei cookies variano in relazione alle impostazioni del browser in uso.

Ad esempio, utilizzando MSIE 6.0 i cookie possono essere visualizzati e cancellati seguendo il percorso:

Strumenti -> Opzioni Internet -> Visualizza File oppure Strumenti -> Opzioni Internet -> Elimina Cookie

mentre Netscape Navigator 7.1 presenta il menù Tools -> Cookie Manager.

!!! Attenzione: bisogna controllare che il browser sia abilitato a ricevere i cookies, parametro settabile nelle opzioni di MSIE nella scheda privacy !!!

Il cookie nel DOM è rappresentato come un oggetto del document.

Per assegnare dei dati ad un cookie ci si può servire della seguente sintassi:

name=value;

che rappresenta rispettivamente il nome dell'attributo (name) del cookie e il valore dell'attributo (value).

Se il valore di un attributo contiene uno spazio o una virgola o un punto e virgola, occorre utilizzare il metodo escape(valore) per assegnarlo e il metodo unescape(valore) in fase di lettura.

expires=expDate;

La data deve essere convertita nel formato GMT.

Ecco un semplice esempio, che chiarirà quanto scritto:

scrivi-leggi cookie

Per settare la proprietà path si deve tener presente che un cookie è associato di default alla pagina che lo ha creato e alle pagine contenute nella stessa directory.

Ad esempio, se un web è stato creato dalla pagina "www.miosito.com/miadir/pagina.html" e si vuole renderlo disponibile anche a "www.miosito.com/altradir/altrapagina.html"  lo si può fare settando il path:

path="altradir";

oppure per renderlo leggibile da tutte le pagine del sito:

path="";

Inoltre si potrebbe voler rendere visibile il cookie attraverso più domini. Potrebbe per esempio esistere un indirizzo prove.miodominio.com ed un indirizzo altreprove.miodominio.com.

Si dovrà impostare perciò la proprietà domain:

domain="miodominio.com";

Non è possibile invece impostare un dominio diverso da quello da dove il cookie è stato creato, come ad esempio "altrodominio.com".

Se si vuole trasmettere il cookie soltanto attraverso connessioni protette da protocolli di sicurezza, si può impostare il valore:

secure=true;

Si può inoltre voler rimuovere un cookie. In questo caso - benché non sia garantita la rimozione immediata del cookie - , si può riscrivere il cookie considerato richiamandolo attraverso il nome (name) e assegnando alla proprietà expires una data passata, sempre considerando il formato GMT.

Il formato è rappresentabile nel seguente modo: Wdy, DD-Mon-YYYY HH:MM:SS GMT.

Wdy rappresenta la forma abbreviata inglese del giorno della settimana (ad esempio, "Mon" per "lunedì"), DD rappresenta le 2 cifre del giorno del mese mentre Mon la forma abbreviata inglese del mese (ad esempio, "Jan" per "gennaio"); YYYY le 4 cifre corrispondenti all'anno*.

E' inoltre definito l'orario, quindi HH:MM:SS are rappresentano le ore, i minuti e i secondi divisi dal carattere ":".

Ad esempio:

expires="Fri, 02-Jan-1970 00:00:00 GMT";

* Non sta allo sviluppatore riprodurre la stringa della data nel formato GMT, è sufficiente utilizzare il metodo toGMTString() su un oggetto Date.


Torna all'inizio | Home