Co to są pliki cookie?

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.jpgcats.example.

Żądanie HTTP do https://cats.example/cat.jpg

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.

Odpowiedź HTTP z https://cats.example/cat.jpg z nagłówkiem 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.

Plik cookie cat=tabby w przeglądarce na laptopie.

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.

Żądanie HTTP wysłane na adres https://cats.example/cat.jpg z nagłówkiem Cookie: cat=tabby

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:

  1. Przeglądarka wysyła żądanie pliku z serwera witryny.
  2. Serwer może dołączyć nagłówek, np. Set-Cookie: cat=tabby, do pliku wysyłanego w odpowiedzi na żądanie.
  3. Gdy przeglądarka otrzyma odpowiedź, zapisze plik cookie.
  4. Przy każdym kolejnym żądaniu przeglądarka wysyła plik cookie do serwera w nagłówku Cookie: cat=tabby.


Diagram sekwencji przedstawiający żądania i odpowiedzi między przeglądarką internetową, witryną cats.example i witryną cats.example, pokazujący, jak ustawiane i wysyłane są pliki cookie.

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