Vyšlo v týdeníku CHIPweek č. 38/96, 17. září 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a638k130.php3

Cookie

Anglický termín „cookie" zcela jistě patří mezi rekordmany, pokud jde o množství svých alternativních významů: v „řádném" překladu znamená kuchtík (či táborový kuchař), sušenku, keks či pečivo k čaji, nebo také vložku do bot. Ale ještě pestřejší jsou slangové významy termínu „cookie" v americké angličtině. Podle Velkého anglicko-českého slovníku autorů Haise a Hodka to je například: holčička, zajíček, kočka, kvítko, ptáček, obsah žaludku, chlápek apod. No a několik dalších významů pak má termín „cookie" i ve světě počítačů a počítačových sítí.

Už se vám někdy stalo, že jste se přihlásili (zalogovali) do nějakého systému či sítě, a ten vám na uvítanou vypsal nějakou moudrost dne, citát, vtip, perličku, výrok klasika či jiný podobný text? Pokud ano, setkali jste se s tím, čemu se v angličtině říká „fortune cookie" - tedy něco jako „bonbónek pro štěstí". S vaší další prací v systému, do kterého jste se přihlásili, pak takovýto „fortune cookie" již nemá nic společného, nejde o žádné heslo či údaj, který by po vás někdo někdy později chtěl.

Další možný počítačový význam termínu „cookie" souvisí s potřebami vzájemné komunikace dvou entit, nejčastěji dvou programů. I těm se totiž může stát, že se potřebují navzájem identifikovat, připomenout se jeden druhému, resp. rozpomenout se na určitou konkrétní situaci, navázat na předchozí transakci apod. Analogie samozřejmě existují i v běžném životě mezi lidmi - například když si dáte vyčistit prádlo do čistírny, dostanete do ruky NĚCO, co příště zase předložíte a pracovníci čistírny podle toho poznají že jste to vy a vydají vám vaše vyčištěné prádlo. Ono NĚCO může být třeba lísteček, na kterém je několikaciferné, vám nic neříkající číslo, které ale pro pracovníky čistírny srozumitelné a smysluplné je. Podobně tomu může být i ve světě počítačů - také zde si mohou dvě komunikující entity předávat NĚCO, co pro ně samotné má konkrétní přesný význam, ale co nezasvěcenému pozorovateli nemusí říkat vůbec nic. Příkladem může být rozsáhlý identifikátor, tvořený na první pohled zcela nesmyslnou kombinací písmen, číslic i třeba speciálních znaků. Mnohdy to dokonce připomíná pustou magii, a zřejmě proto se takovéto „cookie" někdy opatřuje ještě přívlastkem „magické" (resp. magic cookie).

„Magic cookie" je tedy ve své podstatě jednoznačný identifikátor, kterému „rozumí" jeho příjemce a odesilatel (a pro ně něco konkrétního identifikuje, typicky určitou transakci či identitu svého předkladatele). Navíc jde často o identifikátor jednorázový, který lze použít jednou, ale ne vícekrát. Pro jiné entity než jsou obě komunikující je konkrétní hodnota takovéhoto „magic cookie" zcela bezpředmětná a nesrozumitelná.

K čemu je ale něco takového dobré? Kdy se hodí takovéto jednoznačné identifikátory na jedno použití? Jednou velmi aktuální možností je dnešní Internet, konkrétně služba WWW , a v rámci ní komunikace mezi WWW serverem a jeho klientem. Ačkoli to na první pohled není zrovna zřejmé, a také se o tom většinou ani neví, tato komunikace je bezestavová. To znamená, že WWW server si nepamatuje nic o předchozích požadavcích kteréhokoli klienta, a každý nový požadavek vlastně vždy „staví na zelené louce". Požadavky WWW klienta na jeho server se například nemohou odkazovat na předchozí průběh vzájemné komunikace a být typu „já jsem ten, se kterým si před chvílí komunikoval tak a tak". Dobře, ale jak se to potom dělá v takových situacích, kdy určitá vazba na předchozí průběh komunikace je nevyhnutná? Třeba v souvislosti s kódováním češtiny: když si jednou vyberete vámi používané kódování, jak si to WWW server dokáže pamatovat a nemusí vás znovu otravovat při každém požadavku na novou stránku? Zde je řešení ještě celkem jednoduché - zde není problém zařídit věci tak, aby vámi učiněná volba kódování byla zakomponována do ukazatelů URL, které v rámci načítaných stránek dostáváte od příslušného WWW serveru. Když si poprvé vyberete požadované kódování, pošle vám WWW server stránku, ve které jsou všechny ukazatele URL upraveny tak aby tuto volbu obsahovaly. Když některý z těchto ukazatelů URL použijete, vlastně tím WWW serveru vrátíte zpět informaci o tom, jaká byla vaše volba ohledně kódování , a server vám opět pošle stránku s URL odkazy upravenými tak, aby vaši volbu zachovávaly. Sečteno a podtrženo, WWW server si nemusí o vaší volbě nic pamatovat, protože vy mu to pokaždé znovu připomenete. Přitom to, co v rámci ukazatele URL identifikuje vaší volbu, je vlastně také „cookie".

V jiných situacích však již takovýto postup automatického vkládání „cookies" do ukazatelů URL nemusí stačit. Například když se zaregistrujete na nějakém WWW serveru a dostanete zde přidělené jméno a heslo, musíte při každém novém „příchodu" procházet přihlašovací procedurou a ručně uvádět potřebné jméno a heslo. To je jednak nepohodlné, ale hlavně problematické v okamžiku, kdy potřebné jméno a heslo zapomenete. V situaci, kdy se podobným způsobem zaregistrujete u většího počtu WWW serverů, je zapomenutí velmi snadné a docela pravděpodobné. Řešením by mohl být takový mechanismus, který by si dokázal potřebné identifikační údaje pamatovat za vás, a dokonce je i za vás předkládal v takových situacích, kdy jsou zapotřebí. Vše by mohlo fungovat takovým způsobem, že při vašem prvním zaregistrování u určitého WWW serveru by vám nebylo přiděleno uživatelské jméno a heslo, ale pouze jednoznačný identifikátor (cookie). Navíc by jste jej nedostali do ruky vy, ale přímo váš dobře si pamatující browser (vy by jste o tom dokonce ani nemuseli vědět). Váš browser by si příslušné „cookie" vhodným způsobem uchoval, a až by jste někdy v budoucnu znovu zavítali na zmíněný WWW server a ten chtěl aby jste se mu identifikovali, mohl by váš browser vyslat požadované „cookie" už zcela sám. Relativně zdlouhavé a nepohodlné „ruční přihlašování", spojené s nebezpečím lidského zapomenutí, by tak mohlo být zcela eliminováno a nahrazeno spolehlivějším automatizovaným postupem.

Pro praktickou realizaci právě naznačené myšlenky bylo samozřejmě nutné vyvinout a standardizovat vhodné techniky a postupy. Mimo jiné zařídit věci tak, aby zmíněné „cookies" nebyly pouze jednorázově použitelné, ale aby naopak „přetrvávaly" své opakované použití (byly tzv. persistentní, resp. vytrvalé, anglicky „persistent cookies"). Průkopníkem na tomto poli je firma Netscape, ale dnes již se zmíněnými „cookies" dokáží pracovat i četné jiné browsery. Pokud mezi ně patří i vámi používaný browser, podívejte se v jeho okolí po souboru se jménem cookies.txt (či obdobně pojmenovaném souboru, tzv. cookie file), ve kterém se přijaté „cookies" obvykle uchovávají.