Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: cookie, HTTP headers, Set-Cookie, Cookie header, web session

Как Cookie передаются между клиентом и сервером?

Этот вопрос проверяет понимание механизма передачи cookie между браузером и сервером, что необходимо для реализации аутентификации, сессий и отслеживания состояния в веб-приложениях.

Короткий ответ

Cookie передаются через HTTP-заголовки. Когда сервер хочет установить cookie в браузере пользователя, он отправляет ответ с заголовком `Set-Cookie`. Браузер сохраняет эту пару ключ-значение. При последующих запросах к тому же домену браузер автоматически добавляет все сохранённые для этого домена cookie в заголовок `Cookie` запроса. Таким образом, сервер может идентифицировать пользователя и поддерживать состояние сессии.

Длинный ответ

Cookie — это небольшие фрагменты данных, которые сервер отправляет браузеру пользователя для хранения. Основная цель — сохранение состояния (state) между stateless HTTP-запросами, что позволяет реализовать сессии, персонализацию и отслеживание.

Механизм передачи

Передача происходит в два этапа через стандартные HTTP-заголовки:

  1. Установка cookie сервером: Когда сервер хочет сохранить данные на стороне клиента (например, идентификатор сессии), он включает в HTTP-ответ заголовок Set-Cookie.
  2. Отправка cookie браузером: Для всех последующих запросов к доменам и путям, указанным в параметрах cookie, браузер автоматически добавляет сохранённые данные в заголовок Cookie запроса.

Пример кода (Node.js/Express)

Рассмотрим простой сервер, который устанавливает cookie при первом посещении и читает его при повторном.

const express = require('express');
const app = express();

// Маршрут для установки cookie
app.get('/set-cookie', (req, res) => {
    // Устанавливаем cookie с именем 'user' и значением 'id12345'
    // Добавляем параметры: Max-Age (время жизни) и HttpOnly (защита)
    res.setHeader('Set-Cookie', 'user=id12345; Max-Age=3600; HttpOnly');
    res.send('Cookie has been set!');
});

// Маршрут для чтения cookie из входящего запроса
app.get('/get-cookie', (req, res) => {
    // Cookie из заголовка запроса доступны в req.headers.cookie
    const cookies = req.headers.cookie; // Например: 'user=id12345; other=value'
    res.send(`Received cookies: ${cookies}`);
});

app.listen(3000, () => console.log('Server running on port 3000'));

Ключевые параметры cookie

  • Domain и Path: Определяют, к каким запросам будет прикрепляться cookie.
  • Expires/Max-Age: Задают срок жизни cookie.
  • Secure: Cookie будет отправляться только по HTTPS.
  • HttpOnly: Защищает от доступа через JavaScript (предотвращает XSS-атаки).
  • SameSite: Контролирует отправку cookie при кросс-сайтовых запросах (защита от CSRF).

Этот механизм широко применяется для аутентификации (сессионные cookie), хранения пользовательских предпочтений (тема, язык) и аналитики.

Вывод: Cookie — фундаментальный механизм для поддержания состояния в вебе. Их стоит применять для хранения небольших данных на клиенте, которые должны автоматически отправляться серверу, например, для управления сессиями пользователя. Для хранения больших объёмов данных или информации, не требующей отправки с каждым запросом, лучше использовать Web Storage (localStorage/sessionStorage).

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

  • Networks

Ключевые слова

#cookie

#HTTP headers

#Set-Cookie

#Cookie header

#web session

Подпишись на React Developer в телеграм