Где будешь хранить данные на клиенте?
Продвинутые темы
Выбор клиентского хранилища зависит от задачи: cookie — для того, что нужно серверу; localStorage — для долгих настроек; sessionStorage — на вкладку; IndexedDB — для больших данных; память — для секретов.
Куда что класть
Токены авторизации
- Refresh token →
HttpOnlycookie (недоступен JS, защита от XSS). - Access token → в память (переменная/стор), не в localStorage.
Настройки и предпочтения
- localStorage — тема, язык, флаги (бессрочно, ~5–10 МБ).
Временное состояние сессии/вкладки
- sessionStorage — шаги формы, временный контекст (живёт на время вкладки).
Данные для сервера
- Cookie — то, что должно автоматически уходить на сервер (сессии, локаль для SSR).
Большие/структурированные данные, офлайн
- IndexedDB — кеш больших наборов, файлы, PWA.
Принципы выбора
- Нужно серверу → cookie.
- Долгие клиентские данные → localStorage.
- На одну вкладку → sessionStorage.
- Много данных/офлайн → IndexedDB.
- Секреты → память или HttpOnly cookie, не localStorage (XSS).
Коротко для собеседования
Access token — в памяти, refresh — в HttpOnly cookie; настройки — localStorage; временное на вкладку — sessionStorage; данные для сервера — cookie; большие/офлайн — IndexedDB. Секреты не хранят в localStorage из-за XSS. Выбор — по объёму, сроку, доступу сервера и чувствительности.