- I cookie a livello di HTTP -
 
COSA SERVE PER QUESTO TUTORIAL
 DownloadChiedi sul FORUM | Glossario cognizioni generiche sul funzionamento del web
Comprendere il funzionamento dei cookie a livello di HTTP

I COOKIE: COME FUNZIONANO A LIVELLO DI HTTP
I parametri HTTP Cookie e Set-Cookie

Tutti sanno cos'è un cookie: un piccola quantità di dati che i server web possono memorizzare sui client (i browser) e a cui è possibile accedere ad ogni pagina. Essi sono spesso usati per salvare login o per tenere traccia di sessioni. Ma come funzionano i cookie a livello HTTP? Realizziamo innanzitutto una semplice pagina che imposti un cookie chiamato biscotto sul valore cacao. In ASP .Net:


<%
Response.Cookies("biscotto").Value = "cacao"
%>
Cookie impostato!

Mentre in PHP:


<?php
setcookie("biscotto", "cacao");
?>
Cookie impostato!

Salviamo il file in una cartella o pubblichiamolo sul server come scrivi_cookie.aspx (o scrivi_cookie.php) e quindi, sempre con telnet, proviamo ad inoltrare la seguente richiesta:


GET /cartella/scrivi_cookie.aspx HTTP/1.1
Host: localhost

Nota: ovviamente al posto di cartella bisogna specificare il percorso del file a partire dalla root del sito; se si usa PHP, sostituire cookie.aspx con cookie.aspx; se se il server a cui ci si connette non è localhost specificare il nome del server (ad esempio www.arcadiaclub.com) come parametro Host.
A questo punto il server eseguirà la pagina e incontrerà la richiesta di impostare il cookie biscotto su cacao; vediamo dunque la risposta del server:


HTTP/1.1 200 OK
Set-Cookie: biscotto=cacao; path=/
Content-Length: 19


Cookie impostato!

A parte la prevedibile scritta di responso e il parametro Content-Length che già conosciamo, abbiamo un nuovo elemento: Set-Cookie. La risposta è abbastanza auto-esplicativa: il server sta istruendo il nostro client di memorizzare il cookie biscotto con valore cacao. path, indica la cartella a cui il cookie è relativo, inoltre in altre occasioni potrebbero esservi ulteriori informazioni quali la data di scadenza del cookie e così via, ma ciò non è oggetto di questo articolo. Ora il browser memorizzerà il cookie o meno a secondo di impostazioni o restrizioni, e se deciderà di farlo, in seguito, ad ogni nuova richiesta eseguita su quel server verso la cartella specificata in path o in una sua sottocartella invierà il cookie come segue:


GET /altraPagina.htm HTTP/1.1
Host: localhost
Cookie: biscotto=cacao; cookiePrecedente=mandorle

Il client tramite il parametro HTTP Cookie comunica al server tutti i cookie in precedenza memorizzati per questo percorso/server. Vediamo una pagina ASP .Net per mostrare il cookie in questione:

Cookie biscotto: <% =Request.Cookies("biscotto").Value %>

In PHP:


Cookie biscotto: <?php
echo $_COOKIE["biscotto"];
?>

 

<< INDIETRO by VeNoM00