Для чего используются и что хранят HTTP cookies?

«Для чего используются и что хранят HTTP cookies?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP cookies — это небольшие фрагменты данных, которые сервер отправляет браузеру пользователя для хранения и последующей автоматической пересылки обратно с каждым запросом к этому серверу.

Основные цели использования:

  • Управление сессией: Идентификатор сессии для аутентификации пользователя.
  • Персонализация: Сохранение предпочтений (язык, тема, настройки).
  • Отслеживание: Сбор аналитических и рекламных данных.

Пример cookie в HTTP-ответе:

Set-Cookie: sessionId=abc123; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Path=/; Secure; HttpOnly; SameSite=Strict

Работа с cookies в Java (Servlet API):

// Создание и отправка cookie клиенту
Cookie userCookie = new Cookie("username", "john_doe");
userCookie.setMaxAge(60 * 60 * 24); // Время жизни: 24 часа в секундах
userCookie.setHttpOnly(true);      // Защита от доступа через JavaScript
userCookie.setSecure(true);        // Передача только по HTTPS
response.addCookie(userCookie);

// Чтение cookies из запроса
Cookie[] cookies = request.getCookies();

Типы cookies:

  • Сессионные: Удаляются при закрытии браузера.
  • Постоянные: Хранятся до истечения срока (Expires/Max-Age).
  • Secure: Передаются только по защищенному соединению HTTPS.
  • HttpOnly: Недоступны для JavaScript (защита от XSS-атак).