Który mechanizm pozwala zapisać w przeglądarce dane strony (na przykład wybrany motyw kolorystyczny) tak, aby przetrwały zamknięcie przeglądarki i nie były wysyłane do serwera przy każdym żądaniu?
sessionStorage kasuje dane po zamknięciu karty przeglądarki.localStorage trzyma dane bez daty wygaśnięcia i nie dołącza ich do żądań.Do trwałego zapisu danych w przeglądarce służy localStorage. Dane są przypisane do domeny strony, nie mają daty wygaśnięcia i zostają po zamknięciu przeglądarki, a w odróżnieniu od ciasteczek nie są dołączane do żądań wysyłanych do serwera. Zapis i odczyt: localStorage.setItem('motyw', 'ciemny'); oraz localStorage.getItem('motyw').
Wartości są zawsze zapisywane jako napisy, więc obiekty zamienia się na tekst funkcją JSON.stringify(), a z powrotem odczytuje przez JSON.parse(). Typowe zastosowania: wybrany motyw, zawartość koszyka przed zalogowaniem, niewysłany szkic formularza. Nie przechowuje się tam haseł ani tokenów, bo dostęp ma każdy skrypt działający na stronie.
Każda z błędnych odpowiedzi ma związek z przeglądarką, ale żadna nie spełnia obu warunków naraz. sessionStorage działa jak localStorage i też nie wysyła danych do serwera, jednak kasuje je po zamknięciu karty. Wybrany motyw znikałby więc przy następnej wizycie.
Obiekty DOM to drzewo elementów aktualnie wczytanej strony. Zmiany w nich, na przykład dodanie klasy ciemny do <body>, znikają po odświeżeniu strony, bo przeglądarka buduje drzewo od nowa z kodu HTML.
Formularz tylko zbiera dane od użytkownika i wysyła je do serwera, czyli robi dokładnie to, czego pytanie każe uniknąć. Sam niczego trwale w przeglądarce nie zapisuje. Oba warunki - trwałość po zamknięciu i brak wysyłania z żądaniem - spełnia wyłącznie localStorage.
Ciasteczka też przetrwają zamknięcie przeglądarki, ale wysyłane są z każdym żądaniem, dlatego pytanie ich nie wymienia - to drugi warunek odróżnia je od magazynu przeglądarki.