Что такое cookie JSESSIONID в Java-приложениях?

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

Ответ

JSESSIONID — это стандартный идентификатор сессии, создаваемый серверами Java EE (например, Tomcat, Jetty) для отслеживания состояния пользователя в рамках stateless-протокола HTTP.

Как это работает:

  1. При первом запросе сервер генерирует уникальный ID сессии.
  2. Отправляет его клиенту через HTTP-заголовок Set-Cookie.
  3. Клиент возвращает этот ID в заголовке Cookie при каждом последующем запросе.
  4. Сервер использует ID для поиска данных сессии (например, в памяти или хранилище).

Пример HTTP-ответа сервера:

HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=A1B2C3D4E5F6; Path=/app; HttpOnly; Secure

Ключевые характеристики:

  • Сессионная cookie: По умолчанию удаляется при закрытии браузера.
  • HttpOnly: Запрещает доступ к cookie через JavaScript для защиты от XSS-атак.
  • Secure: Передается только по HTTPS.
  • Альтернативная передача: Если cookies отключены, ID может передаваться через URL-параметр (;jsessionid=...), но эта практика считается устаревшей и небезопасной.

Основное назначение: поддержка состояния (аутентификация, корзина покупок, данные формы) между запросами одного пользователя.