Internet jest zaprojektowany tak, że każde żądanie z przeglądarki internetowej do witryny jest oddzielne. Z założenia internet nie ma „pamięci”. Za każdym razem, gdy otwierasz stronę internetową, witryna, którą odwiedzasz, nie może zapamiętać informacji z ostatniej sesji. Dzięki temu internet jest wydajny, ponieważ nie ma potrzeby stosowania mechanizmu śledzenia żądań i odpowiedzi.
Jednak zapominalski charakter internetu też stanowi problem. Jak na przykład może działać koszyk, jeśli witryna, w której robisz zakupy, nie pamięta, co do niego dodano?
Pliki cookie zostały stworzone, aby rozwiązać ten problem.
Pliki cookie pozwalają witrynom zapamiętywać informacje
Gdy odwiedzasz stronę w witrynie, przeglądarka wysyła do serwera witryny żądania dotyczące zasobów zawartych na stronie, takich jak HTML, CSS, JavaScript czy obrazy.
Przeglądarki internetowe i witryny wchodzą w interakcje zgodnie z protokołem HTTP. Jest to standardowy zestaw reguł komunikacji.
W odpowiedzi na żądanie HTTP dotyczące zasobu serwer witryny może dołączyć do niego dodatkowe informacje zwane nagłówkami. Nagłówek Set-Cookie
dołączony do odpowiedzi HTTP
informuje przeglądarkę, aby zapisała tekst: nazwę i wartość. Jest to tzw. plik cookie. Na przykład nagłówek odpowiedzi Set-Cookie: cat=tabby
informuje przeglądarkę, że ma zapisać plik cookie o nazwie „cat” i wartości „tabby”.
Gdy ten plik cookie zostanie ustawiony, kolejne żądania z przeglądarki do witryny będą zawierać nagłówek Cookie: cat=tabby
. Serwer witryny może uzyskać dostęp do pliku cookie z nagłówka żądania i wykorzystać jego wartość.
Jak działają pliki cookie: krok po kroku
Wyobraź sobie, że odwiedzasz stronę cats.example
. Witryna chce Ci wyświetlić losowe zdjęcie kota i zapamiętać, który kot został Ci pokazany.
Poniższe kroki wyjaśniają, jak to zrobić za pomocą plików cookie.
1. Przeglądarka wysyła żądanie pliku
Odwiedzasz stronę główną witryny cats.example
.
Po przetworzeniu kodu HTML strony głównej przeglądarka wysyła żądanie plików na stronie, w tym cat.jpg
z cats.example
.
2. Serwer witryny odpowiada
Serwer pod adresem cats.example
odpowiada plikiem obrazu cat.jpg
.
W odpowiedzi serwer wysyła nagłówek: Set-Cookie: cat=tabby
.
3. Przeglądarka otrzymuje odpowiedź
Przeglądarka otrzymuje plik obrazu i przetwarza nagłówek Set-Cookie: cat=tabby
, który jest z nim powiązany.
Zapisany plik cookie: nazwa cat
, wartość tabby
.
4. Przeglądarka wysyła dodatkowe żądania
Od tej pory przeglądarka będzie dołączać nagłówek Cookie: cat=tabby
do żądań wysyłanych do cats.example
.
Gdy serwer sieciowy cats.example
otrzyma żądanie, może przetworzyć plik cookie i zrobić z jego wartością, co tylko zechce – np. upewnić się, że nie wyśle Ci ponownie obrazu tego samego pręgowanego kota.
Cały proces związany z plikami cookie wygląda tak:
- Przeglądarka wysyła żądanie pliku z serwera witryny.
- Serwer może dołączyć nagłówek, np.
Set-Cookie: cat=tabby
, do pliku wysyłanego w odpowiedzi na żądanie. - Gdy przeglądarka otrzyma odpowiedź, zapisze plik cookie.
- Przy każdym kolejnym żądaniu przeglądarka wysyła plik cookie do serwera w nagłówku
Cookie: cat=tabby
.
Dostęp do plików cookie za pomocą JavaScriptu
W poprzednim przykładzie do ustawienia pliku cookie użyto nagłówka odpowiedzi Set-Cookie
.
Pliki cookie można też tworzyć za pomocą JavaScriptu przy użyciu metody document.cookie
.
Wypróbuj wersję demonstracyjną: javascript-cookie.glitch.me.
Więcej informacji: Dokument: właściwość pliku cookie
Dlaczego potrzebujemy plików cookie?
W 1994 roku inżynier Lou Montulli pracował w firmie Netscape, która stworzyła najpopularniejszą przeglądarkę internetową w połowie lat 90.
W tym samym czasie firma telekomunikacyjna MCI próbowała stworzyć koszyk
dla jednego z pierwszych na świecie sklepów internetowych. Przedstawiciele MCI skontaktowali się z Montullim, aby wyjaśnić swój problem. Montulli dodał do protokołu HTTP funkcję, która umożliwiała witrynie przechowywanie w przeglądarce użytkownika niewielkiej ilości tekstu, nazwy i wartości, np. cart-id=123
. Nazwał go „cookie”, ponieważ w tamtych czasach programiści używali słowa „magic cookie” na określenie małego fragmentu dodatkowych informacji dołączanych do komunikacji danych.
Montulli zakończył prace nad plikami cookie HTTP w mniej niż tydzień. Nie wiedział wtedy, że pliki cookie staną się podstawą najważniejszych funkcji platformy internetowej, w tym reklam, logowania, płatności i wykrywania oszustw. Pliki cookie to pozornie prosta technologia, która ma daleko idące skutki uboczne.
Zastosowania plików cookie
Pliki cookie umożliwiają przeglądarce przechowywanie niewielkiej ilości informacji o użytkowniku, aby „zapamiętywać” coś w wielu żądaniach. Pliki cookie mają wiele zastosowań:
- Zarządzanie sesjami
Umożliwia witrynie rozpoznawanie użytkownika, np. w celu utrzymywania stanu zalogowania na różnych stronach. - Personalizacja
Przechowywanie preferencji użytkownika, takich jak język, motyw lub ostatnio wyświetlane produkty, w celu dostosowania działania witryny. - Śledzenie
Pliki cookie były dotychczas używane do śledzenia zachowań użytkowników w różnych witrynach na potrzeby reklam kierowanych i innych zastosowań.
Pliki cookie są używane głównie do identyfikatorów, a nie do bezpośredniego przechowywania informacji.
Na przykład plik cookie koszyka w internetowym sklepie zoologicznym nie będzie zawierać listy produktów, ale identyfikator konta, który pozwoli sklepowi sprawdzić, co znajduje się w koszyku, w pamięci danych po stronie serwera.
Żądanie wysłane do serwera sklepu zoologicznego może zawierać nagłówek cookie w takiej postaci:
Cookie: _cart=CART1.2.34567890.123456789
Serwer może wtedy wyszukać konto _cart
w swoim magazynie danych i uwzględnić inne informacje o żądaniu.
Więcej informacji
- Atrybuty plików cookie
- Co to są pliki cookie innych firm?
- Żądanie i odpowiedź HTTP
- Narzędzia do obsługi plików cookie
- Wersje demonstracyjne plików cookie
- Korzystanie z plików cookie HTTP
- The Magic Cookie: How Lou Montulli cured the Web's amnesia
- Pliki cookie HTTP (pierwotna specyfikacja)
- Pliki cookie HTTP, czyli jak nie projektować protokołów