Что такое HTTP cookie и как они работают?

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

Ответ

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

Механизм работы:

  1. Сервер включает в HTTP-ответ заголовок Set-Cookie.
  2. Браузер сохраняет эту пару «ключ-значение» локально.
  3. При следующих запросах к тому же домену браузер автоматически добавляет заголовок Cookie с сохраненными данными.

Основные типы:

  • Сессионные (Session cookies): Существуют только во время сессии браузера, удаляются после его закрытия. Не имеют срока истечения (Expires или Max-Age).
  • Постоянные (Persistent cookies): Имеют установленный срок жизни (Expires или Max-Age) и хранятся на диске до истечения этого срока.

Пример работы с куками в Selenium WebDriver (Python):

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# Добавить новую куку
driver.add_cookie({
    "name": "session_token",
    "value": "abc123xyz",
    "domain": "example.com"
})

# Получить все куки для текущего домена
all_cookies = driver.get_cookies()
print(all_cookies)

# Получить значение конкретной куки
value = driver.get_cookie("session_token")["value"]

# Удалить куку
driver.delete_cookie("session_token")

# Удалить все куки
driver.delete_all_cookies()

Назначение: аутентификация сессий, хранение пользовательских предпочтений, отслеживание поведения (аналитика).