HTTP jest protokołem bezstanowym, więc aplikacje webowe muszą używać mechanizmów, które pozwalają "pamiętać" użytkownika między kolejnymi żądaniami. Dwa podstawowe pojęcia to ciasteczka (cookies) i sesje (sessions).
Cookies są przechowywane po stronie klienta, czyli w przeglądarce. Przeglądarka dołącza je do kolejnych żądań (zgodnie z zasadami domeny, ścieżki, czasu życia itp.). Cookies nadają się np. do przechowywania niektórych preferencji, a także do przechowywania identyfikatora, który pozwala serwerowi rozpoznać użytkownika.
Sesja w typowym ujęciu oznacza dane przechowywane po stronie serwera dla danego użytkownika (np. informacja o zalogowaniu, zawartość koszyka). Serwer musi mieć sposób, aby skojarzyć żądanie z właściwą sesją. W praktyce bardzo często odbywa się to przez identyfikator sesji, który jest przekazywany klientowi i zwracany w kolejnych żądaniach — nierzadko właśnie w cookie. Dlatego poprawne, egzaminacyjne uproszczenie brzmi: cookie jest po stronie klienta, a sesja po stronie serwera.
Dlaczego pozostałe odpowiedzi są błędne?
- Stwierdzenie, że cookies są na serwerze, odwraca role klienta i serwera: cookie jest utrzymywane w przeglądarce, a nie w pamięci serwera.
- Stwierdzenie, że oba mechanizmy są po stronie serwera, pomija fakt, że cookie z definicji jest przechowywane po stronie klienta.
- Stwierdzenie, że oba mechanizmy są po stronie klienta, jest mylące: dane sesji (stan) trzyma serwer; po stronie klienta bywa jedynie identyfikator umożliwiający dostęp do tej sesji.
Wskazówka egzaminacyjna: jeśli pytanie dotyczy "gdzie przechowywane są dane", wybieraj odpowiedź rozróżniającą klient (cookie) i serwer (sesja), pamiętając, że identyfikator sesji może być przesyłany w cookie.