Cookie HTTP

I cookie HTTP forniscono al server un meccanismo per archiviare e recuperare informazioni sullo stato nel sistema dell'applicazione client. Questo meccanismo consente alle applicazioni basate sul Web di archiviare informazioni su elementi selezionati, preferenze utente, informazioni di registrazione e altre informazioni che possono essere recuperate in un secondo momento.

Esistono due intestazioni, Set-Cookie e Cookie, correlate ai cookie. L'intestazione Set-Cookie viene inviata dal server in risposta a una richiesta HTTP, che viene usata per creare un cookie nel sistema dell'utente. L'intestazione Cookie è inclusa dall'applicazione client con una richiesta HTTP inviata a un server, se è presente un cookie con un dominio e un percorso corrispondenti.

L'intestazione della risposta Set-Cookie usa il formato seguente:

Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]

Una o più sequenze di stringhe (separate da punti e virgola) che seguono il valore del nome=del criterio devono essere incluse nell'intestazione della risposta Set-Cookie. Il server può usare queste sequenze di stringhe per archiviare i dati nel sistema del client.

La data di scadenza viene impostata usando il formato expires=date, dove date è la data di scadenza in Ora di Greenwich (GMT). Se la data di scadenza non è impostata, il cookie scade al termine della sessione Internet. In caso contrario, il cookie viene salvato in modo permanente nella cache fino alla data di scadenza. La data deve usare il formato seguente:

DAY, GG-MMM-AAAA HH:MM:SS GMT

DAY

Il giorno della settimana (Sun, Mon, Tue, Wed, Thu, Fri, Sat).

DD

Giorno nel mese (ad esempio 01 per il primo giorno del mese).

MMM

Abbreviazione di tre lettere per il mese (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec).

AAAA

L'anno.

HH

Il valore dell'ora in tempo militare (22, ad esempio, sarebbe 10:00).

MM

Valore del minuto.

ß

Secondo valore.

Specificare il nome di dominio, utilizzando il criterio domain=domain_name, è facoltativo per i cookie persistenti e viene usato per indicare la fine del dominio per cui il cookie è valido. I cookie di sessione che specificano un dominio vengono rifiutati. Se il nome di dominio specificato che termina corrisponde alla richiesta, il cookie tenta di trovare la corrispondenza con il percorso per determinare se il cookie deve essere inviato. Ad esempio, se il nome di dominio finale è .microsoft.com, le richieste a home.microsoft.com e support.microsoft.com verrebbero controllate per verificare se il modello specificato corrisponde alla richiesta. Il nome di dominio deve avere almeno due o tre punti al suo interno per impedire che i cookie vengano impostati per terminazioni dei nomi di dominio ampiamente usate, ad esempio .com, .edu e co.jp. I nomi di dominio consentiti sono simili a .microsoft.com, .someschool.edu e .someserver.co.jp. Solo gli host all'interno del dominio specificato possono impostare un cookie per un dominio.

L'impostazione del percorso, usando il pattern path=some_path, è facoltativa e può essere usata per specificare un subset degli URL per cui il cookie è valido. Se viene specificato un percorso, il cookie viene considerato valido per tutte le richieste che corrispondono a tale percorso. Ad esempio, se il percorso specificato è /example, le richieste con i percorsi /examplecode e /example/code.htm corrisponderebbero. Se non viene specificato alcun percorso, si presuppone che il percorso della risorsa associata all'intestazione Set-Cookie sia il percorso.

Il cookie può anche essere contrassegnato come sicuro, che specifica che il cookie può essere inviato solo ai server HTTPS.

Infine, un cookie può essere contrassegnato come HttpOnly (gli attributi non fanno distinzione tra maiuscole e minuscole), per indicare che il cookie non è scriptabile e non deve essere rivelato all'applicazione client, per motivi di sicurezza. In Windows Internet questo significa che il cookie non può essere recuperato tramite la funzione InternetGetCookie .

L'intestazione Cookie è inclusa in tutte le richieste HTTP con un cookie il cui dominio e percorso corrispondono alla richiesta. L'intestazione Cookie ha il formato seguente:

Cookie: <name>=<value> [;<name>=<value>]...

Una o più sequenze di stringhe, usando il valore del nome=di formato, contengono le informazioni impostate nel cookie.

Generazione di cookie

Esistono tre metodi per generare cookie per Microsoft Internet Explorer: usando Microsoft JScript, usando le funzioni WinINet e usando uno script CGI. Tutti i metodi devono impostare le informazioni incluse nell'intestazione Set-Cookie.

Usando il modello a oggetti DHTML (Dynamic HTML), i cookie possono essere impostati chiamando la proprietà cookie dell'oggetto documento, come illustrato nell'esempio seguente.

<SCRIPT language="JavaScript">
<!--
    document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>

I cookie possono essere creati dalle applicazioni tramite la funzione InternetSetCookie. Per altre informazioni, vedere Impostazione di un cookie.

I cookie vengono generati includendo un'intestazione Set-Cookie come parte di uno script CGI incluso nella risposta HTTP a una richiesta.

L'esempio seguente è uno script CGI che include un'intestazione Set-Cookie usando Perl.

print "Set-Cookie:Test=test_value; 
      expires=Sat, 01-Jan-2000 00:00:00 GMT;
      path=/;"

Nota

WinINet non supporta le implementazioni del server. Inoltre, non deve essere usato da un servizio. Per le implementazioni del server o i servizi utilizzano Servizi HTTP Di Microsoft Windows (WinHTTP).