Kad čujete “kolačići”, verovatno pomislite na slatkiš iz detinjstva koji je pravila vaša baka. Međutim, kada se ovaj termin koristi u kontekstu Veba, svakako nije u pitanju nešto slatko – kako može zvučati.
HTTP Cookie ili HTTP “kolačić“, množina “kolačići” (eng. cookies), je metoda koju veb-sajtovi koriste da bi sačuvali određene informacije lokalno, u veb-pregledaču (eng. browser) posetioca.
Posredstvom HTTP kolačića veb-sajtovi mogu razlikovati i zapamtiti posetioce i njihove individualne preference, podešavanja i preduzete radnje.
Prilikom učitavanja veb-sajta, on kreira i šalje kolačić posetiocu. Informacije sadržane u ovom kolačiću čuvaju se od strane veb-pregledača – u njegovoj memoriji, na posetiočevom uređaju. Za svaki sledeći zahtev upućen istom sajtu, pregledač (kao odgovor) “vraća” informacije iz kolačića.
Istorijat HTTP kolačića
HTTP kolačić se pojavio 1994, zahvaljujući radu divelopera Lua Montulija, koji je u to vreme radio za Netscape Communications. Njegovi kolačići bili su potrebni u projektu online prodavnice na kojem je radio, a imali su za svrhu da upamte proizvode dodate u korpu, tj. kolica (eng. shopping cart).
Kolačići se nazivaju “HTTP kolačićima” jer su komplementarni sa mogućnostima HTTP protokola.
Šta tačno predstavlja informacija sadržana u kolačiću?
Tehnički govoreći, kolačići su informacija običnog tekstualnog tipa formata ime=vrednost. Na primer, “language=sr-SR”, gde “language” predstavlja ime kolačića, a “sr-SR” njegovu vrednost.
Na primer, ukoliko višejezični veb-sajt koristi ovu metodu za čuvanje informacija, svaki posetilac će primiti kolačić koji će sadržati njegov/njen izbor jezika. Posetilac koji izabere da mu se sajt prikazuje na srpskom jeziku (klikom na SR dugme, recimo), primiće kolačić “language=sr-SR”. Drugi posetilac koji izabere da mu se sajt prikazuje na engleskom jeziku, primiće kolačić “language=en-US”. Kad svaki od ovih posetilaca respektivno, poseti isti sajt, sajt će razumeti na kojem jeziku da se prikaže pošto bude video njihove kolačiće. Za posetioca koji je izabrao srpski – sajt će se učitati na srpskom. A za sledećeg posetioca iz primera – respektivno, na engleskom.
Kad sajt hoće da zapamti posetioca, može da kreira kolačić koji sadrži jedinstveni identifikator za tog posetioca. Na primer, kolačić “userID=dfg45sd7fg87d5f4g”, gde “userID” predstavlja ime kolačića, a “dfg45sd7fg87d5f4g” nasumice generisan string (niz karaktera) povezan isključivo sa tim posetiocem. ID (identifikator) se može čuvati u bazi podataka sajta, zajedno sa korisničkim preferencijama i podacima. Kada ovaj posetilac ponovo učita sajt, njegov veb-pregledač će poslati kolačić “userID=dfg45sd7fg87d5f4g”. Na osnovu primljenog ID-a, veb-sajt će samo proveriti i dobaviti posetiočeve informacije iz baze podataka.
Sajt sa kojeg kolačić potiče, istom može dodeliti atribute koji služe veb-pregledaču za njegovo procesuiranje (obradu).
Na primer, kolačić koji se kreira prilikom izbora jezika na sajtu u HTTP odgovoru sajta može izgledati slično navedenom i imati atribute kao što sledi:
Set-Cookie: language=sr-SR; Max-Age=3600; Expires=Mon, 13 Apr 2020 08:49:37 GMT; Path=/blog
Set-Cookie je HTTP zaglavlje koje se nalazi u HTTP odgovoru sajta;
language=sr-SR – informacija iz kolačića, ime i vrednost;
Max-Age, Expires i Path su atributi kolačića;
Ovaj kolačić biće upamćen od strane veb-pregledača zajedno sa pripadajućim atributima. Saglasno navedenom periodu, veb-pregledač će čuvati kolačić do isteka vremena izraženog u sekundama (u Max-Age), ili do određenog datuma (u Expires). Kolačić će biti poslat sajtu jedino ukoliko se resurs tražen od strane posetioca nalazi na putanji /blog (u Path), kao npr. supersajt.rs/blog.
Za šta se koriste kolačići?
Generalno govoreći, kolačići se koriste od strane veb-sajtova kako bi ovi mogli “razlikovati” i “zapamtiti” svoje posetioce, one poznate (korisnici) odnosno nepoznate (tj. neregistrovane, eng. guests).
Uz to, kolačići se koriste i da bi se zapamtile korisničke preferencije (izbori) kao i status određene funkcionalnosti, servisa, ili funkcije sajta. Na primer, izabrani jezik na sajtu, pozicija navigacije na sajtu, boja pozadine, dizajnerska tema koja se koristi na sajtu, pristanak posetioca sajta na korišćenje kolačića, proizvodi dodati u korpu prilikom kupovine na sajtu, i drugo.
Kolačići mogu biti privremeni (sesijski) ili trajni.
Kad se posetilac identifikuje na sajtu, korisničkim imenom i lozinkom, npr., tada on ili ona mogu primiti sesijski (privremeni) kolačić. On će poslužiti posetiocu kao privremena propusnica, a prilikom svake sledeće posete sajtu kao potvrda da je taj konkretni posetilac već prošao identifikaciju. Na ovaj način mu sajt ne mora prilikom svake sledeće posete njegovim stranicama tražiti pristupne podatke. Sesijski kolačići koriste se da sačuvaju informacije potrebne samo do okončanja sesije, do zatvaranja veb-pregledača, ili dok se korisnik ne odjavi (eng. log out) sa sajta.
Primer upotrebe privremenog kolačića je WordPress sistem. Jednom kada se korisnik identifikuje (korisničko ime + lozinka) u administraciji sajta, prima i privremeno čuva wordpress_logged_in_[…]=wpuser|[…] kolačić. Prisustvo ovog kolačića, zatim, prilikom svakog zahteva ka sajtu, potvrđuje da je korisnik prethodno identifikovan.
Trajni kolačići ostaju u veb-pregledaču i nakon što ga zatvorimo. I ovi kolačići se mogu koristiti za razlikovanje i pamćenje, ali neregistrovanih (anonimnih) posetilaca sajta. Ove informacije mogu biti od koristi sajtu za generisanje statistike poseta, poboljšanje pruženih usluga, za prikazivanje relevantnih reklamnih oglasa, i drugo.
Trajni kolačići se najčešće koriste u analitičke i statističke svrhe od strane servisa ili kompanija koje se bave veb-reklamiranjem (eng. advertising). Stoga im je alternativni naziv “kolačići za praćenje”.
Primer trajnih kolačića jesu oni koje koristi Google Analytics servis. Glavni kolačići koje koristi ovaj servis su _ga, _gid, i _gat. Još jedan primer ovakvih kolačića jesu oni koji se integrišu na sajt korišćenjem JavaScript kôda, tj. oni se ne šalju veb-pregledačima preko HTTP-a (u Set-Cookie HTTP zaglavlju odgovora sa sajta).
Na koji način i gde se čuvaju kolačići?
Sajt može poslati kolačić svojem posetiocu preko Set-Cookie HTTP zaglavlja ili korišćenjem JavaScript kôda koji se izvršava direktno u veb-pregledaču.
Bez obzira kako je kolačić postavljen, veb-pregledač će ga sačuvati u svojoj memoriji na posetiočevom uređaju. A prilikom svakog sledećeg zahteva veb-pregledača upućenog izvornom sajtu kolačića, informacija(e) iz kolačića se “vraćaju” kao odgovor.
U nekim veb-pregledačima, kolačići se upisuju u zasebne male tekstualne fajlove (npr. u IE). U Firefox-u, npr., svi kolačići se čuvaju u jednom cookie.sqlite fajlu koji se nalazi u Firefox direktorijumu fajl-sistema.
Većina najpoznatijih i najkorišćenijih veb-pregledača nudi opcije i podešavanja kako bi korisnici imali kontrolu nad čuvanjem kolačića. Na primer, u Firefox-u, možete onemogućiti čuvanje bilo kakvih kolačića, ili ograničiti samo tzv. kolačiće “trećih strana” (eng. third-party cookies). Korisnici Firefox-a mogu i ukloniti kolačiće sačuvane u svom veb-pregledaču tako što će ih obrisati.