Как сервер понимает, что к нему обратился тот же пользователь при повторном запросе?

«Как сервер понимает, что к нему обратился тот же пользователь при повторном запросе?» — вопрос из категории HTTP и веб-протоколы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сервер идентифицирует пользователя между запросами с помощью механизмов сессий и куки:

  1. Куки (Cookies)
    При первом обращении сервер отправляет в ответе уникальный идентификатор сессии (например, sessionid=abc123). Браузер сохраняет его и автоматически включает в заголовки последующих запросов.
Set-Cookie: sessionid=abc123; Path=/; HttpOnly
  1. Сессии
    Сервер хранит данные сессии (например, в памяти или БД) по этому ID. При новом запросе он извлекает данные по полученному sessionid.

Альтернативы:

  • JWT-токены в заголовке Authorization
  • Локальное хранилище браузера + ручная передача токена

Пример проверки сессии в Express.js:

app.get('/profile', (req, res) => {
  if (!req.session.user) {
    return res.status(401).send('Not authenticated');
  }
  // Пользователь опознан
});