V minulém díle tohoto seriálu jsme si řekli, že HTTP je protokol bezstavový a že jednou z technik, jak tuto bezstavovost obejít, je použití cookies.

Cookies jsou jediná technika v HTTP, která je přímo navržená k tomu, abyste si mohli něco na klienta "uložit" a při dalším požadavku zase "vyzvednout". Cookies fungují tak, že server pošle jako jednu z HTTP hlaviček odpovědi textový řetězec, který si prohlížeč uloží na disk a při dalším požadavku ho ve formě HTTP hlavičky pošle zpátky.

To byl velmi zjednodušený náhled na celou problematiku, podrobnější informace o použití cookies v ASP.NET najdete v článku Sušenky.NET na tomto serveru.

Do cookies můžete uložit pouze omezené množství dat. Zabrání vám v tom jednak omezení na straně prohlížeče (maximální velikost cookie se obvykle počítá v jednotkách kB, přesné číslo si nepamatuji) a druhak by vám v tom měl zabránit i zdravý rozum. Obsah cookie se přenáší s úplně každým požadavkem na váš server, a to i tehdy, když ho server vůbec nepotřebuje a nevyužije. Například při požadavcích na obrázky a další statická data. Což zvyšuje objem přenášených dat, za která obvykle tou či onou formou platíte.

Cookies jsou v zásadě dvojího druhu: permanentní a per-session.

Permanentní cookies

Permanentní cookies obsahují čas expirace (nastavený serverem, tedy vaší aplikací) a jsou ukládány na disk. Přežijí tedy zavření okna prohlížeče, restart počítače atd. Budou se posílat s každým požadavkem na server, dokud nevyprší a nebo dokud je uživatel ručně nesmaže.

Pokud napíšete k nějakému článku na tomto serveru komentář, server si do cookie uloží údaje, které jste vyplnili do formuláře - jméno, e-mail, adresu webové stránky... Můžete si to ověřit, podívejte se na soubor, který je uložen ve vašem uživatelském profilu a jmenuje se nějak jako váš[email protected][1].txt (v mém případě - Windows Vista - je uložen v C:\Users\Altair\AppData\Roaming\Microsoft\Windows\Cookies).

Když si tento soubor otevřete, tak tam shora uvedené údaje najdete, můžete si je přečíst (v případě tohoto serveru je to poněkud komplikované, protože jsou Base64 enkódovaná kvůli diakritice) a můžete je též změnit, případně celý soubor smazat.

V tom spočívá hlavní slabost cookies: neměli byste do nich ukládat citlivé údaje a nemůžete se spolehnout na to, že je dostanete v pořádku a nepozměněná.

Session cookies

Per-session cookies nemají určený čas expirace a prohlížeč si je drží v paměti. V okamžiku zavření okna se nenávratně ztratí. Konkrétní obsah pojmu "session" závisí na použitém prohlížeči. Například Internet Explorer funguje tak, že si údaje pamatuje do zavření okna. Pokud si v téže instanci prohlížeče otevřete nové okno (Ctrl+N), bude mít stejnou sadu per-session cookies, jako to předešlé. Pokud uživatel ale otevře novou instanci IE (poklepe třeba na ikonku na ploše), bude mít tato instance samostatnou sadu per-session cookies.

Druhý jmenovaný typ cookies je držen pouze v paměti, jeho neoprávněná změna je tedy o něco málo komplikovanější, není to tak jednoduché, jako přepsat TXT soubor (ne však nemožné). Na druhou stranu, jeho chování může být poněkud matoucí.

Výhody a nevýhody

Proč cookies používat

Proč cookies nepoužívat

Doporučení

Zítra vyjde další díl tohoto seriálu, který se bude podrobněji věnovat technologii Sessions.