Gestire i Cookie tramite javascript
Un cookie è un stringa di testo in formato nome-valore per la persistenza client-side di informazioni di piccole dimensioni:
user=emiliano
Questo è un cookie! sul lato sinistro del carattere ’=’ si trova il nome della proprietà che vogliamo salvare, sul lato destro si trova il corrispettivo valore.
Furono introdotti nel protocollo HTTP per aiutare gli sviluppatori del web a tenere traccia di alcune informazioni relative all’utente durante l’esplorazione di un sito web.
Per persistenza client-side si intende che i cookie vengono conservati dal client, quindi il broswer, che accede al sito e non sul server stesso. Possono essere utili, ad esempio, per memorizzare le scelte dell’utente riguardo il layout o colore di una pagina.
Javascript ci permette di interaggire direttamente con i cookie utilizzando la proprietà cookie dell’oggetto document:
1 document.cookie = "bgcolor=red;country=italy";
In questo caso abbiamo creato due cookie (notate il carattere di separazione ’;’) semplicemente associando la stringa di testo alla proprietà.
I cookie hanno però delle forti limitazioni, in primo luogo la durata e la dimensione massima di 4KB. Di default un cookie viene cancellato al momento della chiusura del broswer.
Per evitare ciò è possibile settare l’attributo max-age con un valore indicante in secondi quanto tempo il cookie deve avere esistenza. Ad esempio possiamo impostare un ora di vita:
1 document.cookie = "bgcolor=red;country=italy;max-age="+ (60 * 60);
Un altra limitazione dei cookie è la visibilità del cookie. Di default un cookie è accessibile solo dalla pagina che lo ha creato e a quelle presenti nella stessa directory (comprese le sottodirectory).
Per cambiare questo comportamento possiamo utilizzare l’attributo path.
1 document.cookie = "bgcolor=red;path=/ordini";
In questo modo, supponendo che il nostro dominio sia www.javascriptitalia.it, il cookie sarà visibile a tutte le pagine presenti nella cartella ordini (comprese le sottodirectory ovviamente).
In genere abbiamo bisogno che il cookie sia visibile ad una sola web application. Ma in alcuni casi potremmo avere a che fare con un insieme di web app, e l’attributo domain ci verrebbe in soccorso.
Infatti possiamo impostarlo ad un dominio preciso:
1 document.cookie = "bgcolor=red;path=/;domain=.italia.it";
Così facendo il cookie sarà visibile ad altri siti, come javascript.italia.it oppure mysql.italia.it.
Un altro attributo di cui può essere utile la conoscenza è secure. Di default un cookie è non sicuro perché trasmesso sul normale protocollo HTTP. Ma se trasmettessimo questo cookie sul protocollo HTTPS avremo la possibilità di marcarlo come sicuro.
Essendo un cookie una semplice stringa, per modificare o leggere un solo attributo dovremmo lavorare su di essa con le comuni funzioni split, indexOf o substring offerte da javascript.
