Condividi tramite


Cookie HTTP

I cookie HTTP forniscono al server un meccanismo per archiviare e recuperare le 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.

Sono presenti due intestazioni, Set-Cookie e Cookie, correlate ai cookie. L'intestazione Set-Cookie viene inviata dal server in risposta a una richiesta HTTP, 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 punto e virgola) che seguono ilvalore del nome= del modello 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 Greenwich Mean Time (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:

GIORNO, GG-MMM-AAAAHH:MM:SS GMT

GIORNO

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

DD

Giorno del 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, August, Sep, Oct, Nov, Dec).

AAAA

Anno.

HH

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

MM

Valore dei minuti.

SS

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 che termina è .microsoft.com, le richieste a home.microsoft.com e support.microsoft.com verranno 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 le 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 corrispondono. Se non viene specificato alcun percorso, si presuppone che il percorso sia il percorso della risorsa associata all'intestazione Set-Cookie.

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. All'interno di Windows Internet, ciò 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 il percorso corrispondono alla richiesta. L'intestazione Cookie ha il formato seguente:

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

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

Generazione di cookie

Esistono tre metodi per la generazione di cookie per Microsoft Internet Explorer: l'uso di Microsoft JScript, l'uso delle funzioni WinINet e l'uso di uno script CGI. Tutti i metodi devono impostare le informazioni incluse nell'intestazione Set-Cookie.

Usando il modello a oggetti DHTML (Dynamic HTML), è possibile impostare i cookie 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, usare i servizi HTTP di Microsoft Windows (WinHTTP).