COOKIE

I cookie rappresentano un sistema che può essere utilizzato da connessioni lato server per memorizzare e/o recuperare informazioni sul lato client della connessione, ed attraverso questo tipo di meccanismo riuscire a mantenere delle informazioni sul client in modo persistente e quindi condividere uno stato attraverso più pagine o script.
Le possibili applicazioni realizzabili mediante l’utilizzo dei cookie sono diverse; un esempio viene fornito dai siti su cui si ha la possibilità di personalizzare la pagina visualizzata e di scegliere alcuni parametri preferenziali, come i colori ed il tipo dei contenuti che più interessano. In tal modo, quando il client accede nuovamente a quella pagina, il server sa già quali informazioni fornirgli.
Un’altra applicazione tipica è quella di memorizzare determinate informazioni per evitare al navigatore di doverle immettere più di una volta; ad esempio, chi usa servizi di webmail spesso ha la possibilità, selezionando un’apposita opzione, di fare in modo, al momento di accedere alla propria casella di posta, di essere “riconosciuto” e di dover inserire solo la password.
Un ulteriore esempio è quello dei “carrelli”, componente irrinunciabile dei siti di commercio elettronico.

Dal punto di vista del sito che lo invia, un cookie è utile perché permette al sito stesso di essere più efficiente: esso sa quali sono le informazioni rilevanti per i propri utenti, può scartare le pagine che non vengono utilizzate e concentrare gli sforzi sulle informazioni che il client desidera.

I cookie non sono altro che dei file di testo, di dimensioni ridotte (1k circa), il cui scopo è quello di informare il server riguardo gli accessi a determinate pagine web e a particolari informazioni riguardanti il navigatore. Inoltre, non possono essere in alcun modo dannosi, in particolare non riempiono il disco con file qualunque, non danneggiano il computer, non introducono virus e non raccolgono informazioni private sugli utenti.

Un cookie è costituito da una coppia NAME/VALUE che si può considerare come una variabile e da una data di scadenza, EXPIRES, oltre la quale si autoelimina (al momento della creazione non viene indicata, compare alla chiusura del browser).
La scadenza è facoltativa e consiste di un timestamp (quindi un numero intero); se non viene indicata, il cookie verrà automaticamente eliminato alla chiusura del browser.
Ad ogni cookie sono associati anche un DOMAIN (dominio) ed un PATH (percorso). Il dominio consente di individuare quali cookie sono accessibili per un determinato sito (per default, viene impostato al nome del dominio corrente); può essere comodo, tuttavia, utilizzare un valore diverso. Ad esempio, se consideriamo il sito www.site.com, con il valore predefinito di dominio i cookie impostati non risulteranno validi per un eventuale shop.site.com; usando, invece, “.site.com” i cookie saranno validi per tutti i domini che ricadono sotto site.com.
Il persorso ha anch’esso funzione di individuazione del campo di validità del cookie e, precisamente, serve a specificare il sottoinsieme di indirizzi URL in un dominio nei quali il cookie è valido (per default è impostato al path corrente).
Infine, ogni cookie ha un attributo SECURE che, se impostato, lo contrassegna come riservato, per cui esso potrà essere trasmesso solo attraverso connessioni sicure, in particolare connessioni HTTPS (per default tale attributo non è impostato, cioè non viene richiesta alcuna connessione sicura).

In generale, la struttura di un cookie è la seguente:

<COOKIE
NAME = ”cookie_name”
VALUE = ”text”
EXPIRES = ”period”
SECURE = ”Yes/No”
PATH = ”urls”
DOMAIN = ”.domain.com”>

Il funzionamento è molto semplice e intuitivo: ad una richiesta HTTP, il server, tramite un header Set-Cookie nella risposta, può richiedere al client di memorizzare un cookie; il client associa il cookie al server dal quale lo ha ricevuto e lo rispedisce tramite un header Cookie nella richiesta.