11.19 Cookie -- gestione dello stato HTTP

Il modulo Cookie definisce le classi per astrarre il concetto di cookies, un meccanismo di gestione dello stato HTTP. Supporta cookie semplici basati su stringhe e fornisce una astrazione per inserire ogni tipo di dato serializzabile come valore cookie.

Il modulo si attiene strettamente alle regole di analisi descritte nelle specifiche RFC 2109 e RFC 2068. È anche stato scoperto che MSIE 3.0x non segue le regole sui caratteri indicate in queste specifiche. Come risultato, l'analisi delle regole usate è un pò meno stringente.

exception CookieError
Eccezione riferita a fallimenti per una non validità rispetto all'RFC 2109: attributi non corretti, intestazioni Set-Cookie: non corrette, etc..

class BaseCookie( [input])
Questa classe è un oggetto simile ai dizionari le cui chiavi sono stringhe e i cui valori sono istanze Morsel. Notare che dopo aver impostato la chiave in un valore, il valore viene prima convertito in un Morsel contenente una chiave ed il valore.

Se input viene indicato, viene passato al metodo load().

class SimpleCookie( [input])
Questa classe deriva da BaseCookie e sovrascrive i metodi value_decode() e value_encode() per divenire rispettivamente identity e str().

class SerialCookie( [input])
Questa classe deriva da BaseCookie e sovrascrive value_decode() e value_encode() per divenire pickle.loads() e pickle.dumps().

Deprecato dalla versione 2.3 di Python. La lettura di valori pickled da dati cookie non affidabili è un potenziale grave buco di sicurezza, in quanto le stringhe serializzate possono essere modificate in modo che codice arbitrario possa essere eseguito sul server. Viene supportato solo per compatibilità con le versioni precedenti ed in futuro potrebbe essere eliminato definitivamente.

class SmartCookie( [input])
Questa classe deriva da BaseCookie. Sovrascrive value_decode() per divenire pickle.loads() se c'e' un valido dato serializzato o altrimenti il suo stesso valore. Sovrascrive anche value_encode() in pickle.dumps() finché è una stringa, nel cui caso restituisce il valore stesso.

Deprecato dalla versione 2.3 di Python. Lo stesso avviso di sicurezza di SerialCookie viene ribadito anche qui.

Una altra nota sulla sicurezza è necessaria: per compatibilità con il passato, il modulo Cookie esporta una classe chiamata Cookie che è solo un alias per SmartCookie. Questo è probabilmente un errore e verrà quanto prima rimosso. Non si deve utilizzare la classe Cookie nelle proprie applicazioni, per lo stesso motivo per cui non si deve utilizzare la classe SerialCookie.

Vedete anche:

RFC 2109, HTTP State Management Mechanism
Queste sono le specifiche per la gestione dello stato implementate da questo modulo.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.