Парсер Set-Cookie

Set-Cookie Parser

Вставьте многострочные заголовки ответа Set-Cookie для проверки атрибутов и выявления опасных комбинаций SameSite / Secure.

Карточки атрибутов Cookie

2 Set-Cookie
#1sessionabc123
path/
httponly(флаг)
secure(флаг)
samesiteLax
Явных проблем с атрибутами не обнаружено
#2preview1
max-age600 (10m 0s)

setCookieParser.attr.maxAgeHint

samesiteNone
secure(флаг)
setCookieParser.warn.missingHttpOnlysetCookieParser.warn.missingPath

Предпросмотр JSON

[
  {
    "index": 0,
    "raw": "session=abc123; Path=/; HttpOnly; Secure; SameSite=Lax",
    "name": "session",
    "value": "abc123",
    "decodedValue": "abc123",
    "attributes": [
      {
        "key": "path",
        "value": "/"
      },
      {
        "key": "httponly",
        "value": null
      },
      {
        "key": "secure",
        "value": null
      },
      {
        "key": "samesite",
        "value": "Lax"
      }
    ],
    "attributeMap": {
      "path": "/",
      "httponly": true,
      "secure": true,
      "samesite": "Lax"
    },
    "warnings": []
  },
  {
    "index": 1,
    "raw": "preview=1; Max-Age=600; SameSite=None; Secure",
    "name": "preview",
    "value": "1",
    "decodedValue": "1",
    "attributes": [
      {
        "key": "max-age",
        "value": "600"
      },
      {
        "key": "samesite",
        "value": "None"
      },
      {
        "key": "secure",
        "value": null
      }
    ],
    "attributeMap": {
      "max-age": "600",
      "samesite": "None",
      "secure": true
    },
    "warnings": [
      "warn.missingHttpOnly",
      "warn.missingPath"
    ]
  }
]

Когда браузер не принимает Cookie, часто проблема не в значении, а в неверных атрибутах Set-Cookie.

Похожие

Что такое парсер Set-Cookie?

Парсер Set-Cookie — это отладочный инструмент, специально предназначенный для анализа содержимого `Set-Cookie` в HTTP-заголовках ответа. Его цель — не просто разбить строку по точкам с запятой, а помочь разработчикам определить: корректна ли конфигурация этого Cookie на сервере, почему браузер его не принял, какие комбинации атрибутов создают риски безопасности или совместимости, и подходит ли текущий Set-Cookie для кросс-сайтовых сценариев, SSO, iframe, сторонних Cookie или сессий.

В отличие от Cookie в заголовке запроса, Set-Cookie — это «команда конфигурации», которую сервер отправляет браузеру. Он содержит не только `name=value`, но и атрибуты SameSite, Secure, HttpOnly, Path, Domain, Expires, Max-Age, Partitioned — эти поля напрямую определяют, запишет ли браузер Cookie, когда он истечёт, для каких путей и доменов он действует, и можно ли его отправлять в кросс-сайтовых запросах. Поэтому коренные причины многих проблем «потеря сессии», «браузер не отправляет Cookie», «не работает в кросс-доменном сценарии» кроются не в самом значении, а в конфигурации атрибутов Set-Cookie.

Ценность текущей страницы в том, чтобы структурированно извлечь эти атрибуты из исходного заголовка ответа, а затем выполнить статическую проверку на соответствие реальным правилам браузера. Например, не отсутствует ли Secure у SameSite=None, сочетается ли Partitioned с Secure, не указан ли ошибочно Domain у префикса __Host-, невалиден ли Max-Age или равен 0, не отсутствует ли Max-Age у Expires. Браузер обычно не показывает эти проблемы как синтаксические ошибки, а просто молча отклоняет Cookie или демонстрирует «не работает», поэтому инструментальная проверка очень важна.

Если вы просто хотите узнать, какие Cookie сейчас отправляются в запросе, не оставайтесь на этой странице — перейдите к «Парсеру HTTP Cookie», который лучше подходит для разбора заголовков запроса. Текущая страница больше подходит для сценариев диагностики заголовков ответа: «почему браузер не записал Cookie», «есть ли скрытые проблемы в конфигурации этого Cookie на сервере», «корректна ли комбинация кросс-сайтовых атрибутов и атрибутов безопасности».

Варианты использования

  • Быстрая локализация проблем с конфигурацией SameSite, Secure, HttpOnly, Path/Domain, когда браузер отклоняет запись Cookie
  • Проверка корректности сочетания SameSite=None с Secure в сценариях сторонней авторизации, SSO, встраивания в iframe или кросс-сайтовых запросов
  • Массовая проверка Cookie, возвращаемых интерфейсами, на отсутствие HttpOnly, SameSite или наличие высокорисковых комбинаций атрибутов при аудите безопасности
  • Проверка удовлетворения строгим ограничениям браузера для Cookie с префиксами __Host-/__Secure-, чтобы избежать молчаливого отбрасывания
  • Подтверждение одновременного объявления Partitioned и Secure при отладке механизма разделённых сторонних Cookie Partitioned Cookie / CHIPS
  • Сравнение различий заголовков Set-Cookie между средами разработки, тестирования и продакшена для диагностики аномалий сессии после переключения сред

Как использовать

  1. Скопируйте содержимое заголовков ответа Set-Cookie (поддерживается многострочный ввод) из браузерных DevTools, сниффера или серверных логов
  2. Вставьте в область ввода, инструмент автоматически удалит префикс `Set-Cookie:` и выполнит построчный анализ
  3. Просмотрите имя, значение, декодированное URL-значение, карточки атрибутов и предупреждающие метки каждого Cookie
  4. Скопируйте исходные заголовки или просмотрите JSON-предпросмотр, отправьте результаты бэкенду, вставьте в Issue или в тестовые скрипты

Функции

  • Независимый анализ нескольких Set-Cookie: каждая строка в отдельной карточке, просмотр имени, исходного значения, декодированного URL-значения и атрибутов
  • Автоматическая проверка 14 типичных проблем: покрывает SameSite, Secure, HttpOnly, Path, Domain, Max-Age, Expires, префиксы __Host-/__Secure- и Partitioned
  • Полный разбор атрибутов: структурированное отображение полей SameSite, Secure, HttpOnly, Path, Domain, Expires, Max-Age, Partitioned
  • Человекочитаемое преобразование Max-Age: секунды автоматически конвертируются в минуты, часы и дни
  • Многострочный пакетный ввод: можно вставить весь блок заголовков Set-Cookie из DevTools или сниффера
  • Копирование исходных заголовков и JSON-предпросмотр: удобно отправлять бэкенду, использовать в документации, Issue, скриптах и тестах
  • Локальная обработка без загрузки: конфиденциальные Session, Token и Cookie сессии анализируются в браузере, не покидая устройство

Когда использовать парсер Set-Cookie, а когда две другие страницы?

Понять, «что настроил сервер» и «что фактически отправляется в запросе» — это две разные вещи, не смешивайте их при диагностике.

ИнструментПодходящий вводЛучше всего подходитКлючевое преимущество
Парсер Set-Cookie (текущая страница)Заголовки ответа Set-CookieДиагностика причин, по которым браузер не принимает Cookie, почему не работает кросс-сайтовая отправка, почему есть риски в конфигурации атрибутов безопасностиПолный разбор атрибутов и автоматическая проверка 14 распространённых проблем конфигурации
Парсер HTTP CookieЗаголовок запроса Cookie, document.cookieПодтверждение того, какие Cookie фактически отправляются в запросе, закодированы ли значения URL-способом, есть ли повторяющиеся именаБолее сфокусирован на разборе пар имя-значение в заголовке запроса и стандартизированном выводеОткрыть парсер HTTP Cookie
Парсер CookieСмешанные сценарии со строками Cookie и Set-CookieКогда источник данных пока не ясен, или нужно быстро переключаться между режимами Cookie / Set-Cookie на одной страницеВыглядит как главный вход для отладки Cookie, поддерживает экспорт Netscape Cookie FileОткрыть парсер Cookie

Best Practices

Сначала определите, проблема в «неудачной установке» или «неотправке в запросе»

Если браузер вообще не записал Cookie, начните с текущей страницы; если Cookie уже записан, но не отправляется в последующих запросах, используйте парсер HTTP Cookie совместно. Set-Cookie и Cookie в заголовке запроса — это два разных этапа.

В кросс-сайтовых сценариях сначала проверяйте комбинацию SameSite=None и Secure

Самая частая проблема в SSO, сторонней авторизации, встраивании в iframe и кросс-доменных запросах — это SameSite=None без Secure. Сначала устраните эту проблему, затем проверяйте серверную логику и политики браузера.

Не смотрите только на имя с префиксами __Host- / __Secure-, проверяйте полноту ограничений

Многие команды думают, что добавление префикса `__Host-` или `__Secure-` к имени Cookie уже делает его безопаснее, но если сопутствующие условия Secure, Path=/, Domain не выполнены, браузер всё равно отклонит запись.

При написании документации и воспроизведении Issue сохраняйте и исходные заголовки, и JSON

Исходные заголовки подходят для проверки реальных возвращаемых значений бэкендом и DevOps; JSON подходит для вставки в Issue, тест-кейсы и скрипты для дальнейшей обработки. Сохранение обоих материалов лучше, чем просто скриншот из DevTools, для воспроизведения и совместной работы.

Часто задаваемые вопросы

В чём разница между парсером Set-Cookie и парсером заголовка запроса Cookie?

Парсер Set-Cookie работает с заголовками ответа сервера и фокусируется на том, «примет ли браузер этот Cookie и нет ли проблем с атрибутами»; парсер Cookie работает с исходящими запросами браузера и показывает, «какие именно Cookie отправляются в этом запросе». Если вы диагностируете проблемы с конфигурацией SameSite, HttpOnly, Secure, Path, Domain, Expires, Max-Age, используйте текущую страницу.

Парсер HTTP Cookie

Почему браузер получил ответ, но не записал Cookie?

Это именно та проблема, для решения которой лучше всего подходит данный инструмент. Частые причины: SameSite=None без Secure, попытка установить Secure Cookie на HTTP-странице, нарушения префикса __Host-, Partitioned без Secure, некорректная конфигурация Path или Domain, невалидный Max-Age или равный 0, а также ограничения браузера на сторонние Cookie.

Какие типичные риски Set-Cookie проверяет инструмент?

Страница автоматически обнаруживает 14 распространённых проблем: SameSite=None без Secure, невалидное значение SameSite, Partitioned без Secure, отсутствие HttpOnly, отсутствие Path, отсутствие SameSite, префикс __Host- без Secure / Path не равен / / неверно указан Domain, префикс __Secure- без Secure, невалидный Max-Age, Max-Age=0, Domain начинается с точки и Expires без Max-Age.

Почему SameSite=None обязательно требует Secure?

Современные браузеры требуют, чтобы Cookie, отправляемые в кросс-сайтовых запросах с атрибутом `SameSite=None`, обязательно имели и атрибут `Secure`, иначе браузер обычно просто отклоняет запись. Эта проблема очень часто встречается при отладке сторонней авторизации, SSO, встраивания в iframe и кросс-доменных запросов.

Почему браузер отклоняет Cookie с префиксами __Host- и __Secure-?

`__Host-` и `__Secure-` — это префиксы безопасности со строгими ограничениями. `__Host-` требует обязательного Secure, Path=/ и запрета на установку Domain; `__Secure-` как минимум требует Secure. При нарушении этих правил браузер просто игнорирует соответствующий Cookie.

Как интерпретировать Max-Age и Expires?

Max-Age — это относительное время в секундах, обычно имеет приоритет над Expires; Expires — это абсолютная точка времени, зависящая от часов клиента. Многие серверы указывают только Expires без Max-Age — это работает, но при отладке легко получить ошибку из-за смещения часового пояса или системного времени.

Подходит ли инструмент для диагностики кросс-сайтовых и сторонних Cookie?

Подходит. Будь то сторонняя авторизация, SSO, встраивание в iframe, кросс-доменные интерфейсы или сценарии CHIPS (Partitioned Cookie), этот инструмент поможет быстро оценить корректность комбинации SameSite, Secure и Partitioned.

Поддерживается ли копирование или экспорт результатов анализа?

Поддерживается. Вы можете одним кликом скопировать исходные заголовки Set-Cookie, а также просмотреть структурированный JSON-предпросмотр, чтобы перенести имя, значение, атрибуты и предупреждения каждого Cookie в Issue, документацию, тестовые скрипты или записи совместной отладки.

Отправляются ли мои скопированные Session и Token на сервер?

Нет. Анализ содержимого Set-Cookie, URL-декодирование, разбор атрибутов и проверка предупреждений полностью выполняются локально в браузере, конфиденциальные заголовки ответа не загружаются на сервер.

Глоссарий

Set-Cookie
HTTP-заголовок ответа, через который сервер сообщает браузеру сохранить Cookie. В одном ответе может быть несколько заголовков Set-Cookie, каждый обычно соответствует одному Cookie.
SameSite
Атрибут, контролирующий отправку Cookie в кросс-сайтовых запросах. Частые значения: Strict, Lax, None; значение None обычно требует одновременной установки Secure.
HttpOnly
При установленном атрибуте фронтенд JavaScript не может прочитать этот Cookie через document.cookie, в основном используется для снижения риска кражи сессии через XSS.
Secure
При установленном атрибуте браузер отправляет Cookie только по HTTPS-соединениям (или в исключении localhost), избегая утечки конфиденциальных Cookie по открытому HTTP.
Max-Age
Относительное время жизни Cookie в секундах. Обычно имеет приоритет над Expires, рекомендуется явно указывать на сервере.
Expires
Абсолютное время истечения Cookie, зависит от локального времени клиента. При отдельном использовании стоимость отладки обычно выше, чем у Max-Age.
Path
Ограничивает префикс URL-пути, для которого действует Cookie. При несовпадении Path, даже если Cookie записан, он не будет отправлен в последующих запросах.
Domain
Ограничивает домен, для которого действует Cookie. Если не указан, обычно действует только для текущего хоста; при указании может распространяться на поддомены.
Partitioned (CHIPS)
Механизм разделённого хранения сторонних Cookie, часто используется как альтернатива после постепенного ужесточения браузерами правил для сторонних Cookie. Текущая реализация обычно требует сочетания с Secure.
Префиксы __Host- / __Secure-
Поддерживаемые браузером префиксы имён Cookie с высоким уровнем безопасности, имеющие строгие ограничительные правила. При нарушении правил браузер отклоняет приём соответствующего Cookie.

Справочная таблица сравнения трёх стратегий SameSite

При диагностике кросс-сайтовых Cookie сначала посмотрите на границы поведения SameSite, затем проверьте отсутствие Secure.

Значение SameSiteКросс-сайтовая топ-навигация (GET)Кросс-сайтовые субресурсы (img/iframe/script)Кросс-сайтовые POST-формыКросс-сайтовые XHR/fetchОбязателен ли Secure
StrictНе отправляетсяНе отправляетсяНе отправляетсяНе отправляетсяНет
Lax (по умолчанию)ОтправляетсяНе отправляетсяНе отправляетсяНе отправляетсяНет
NoneОтправляетсяОтправляетсяОтправляетсяОтправляетсяОбязательно нужен Secure

Таблица соответствия частых проблем отладки Set-Cookie

Когда браузер молча отклоняет Cookie, сначала проверяйте по следующим направлениям — это обычно быстрее, чем смотреть на тело ответа.

СимптомНаиболее вероятная причинаПроверьте в первую очередь
Браузер вообще не записывает CookieSameSite=None без Secure, нарушение префикса или недопустимая комбинация атрибутовСначала посмотрите на предупреждающие метки и карточки атрибутов на текущей странице
Не работает в кросс-сайтовом / iframe сценарииСлишком строгий SameSite, отсутствие Secure или ограничения сторонних политикФокус на SameSite, Secure, Partitioned
Cookie истекает сразу после записиMax-Age=0, невалидный Max-Age, проблемы со временем ExpiresСначала Max-Age, затем Expires
__Host- / __Secure- Cookie не работаетНе выполнены ограничения Secure, Path=/ или DomainПроверьте, сработало ли предупреждение о префиксе
Работает в среде разработки, не работает в продакшенеРазличия в ответах на уровне HTTPS, Domain, Path, SameSite или проксиСкопируйте исходные заголовки, сравните возвращаемые Set-Cookie в разных средах

Privacy & Security

Анализ заголовков ответа Set-Cookie, URL-декодирование, разбор атрибутов и проверка 14 типов предупреждений полностью выполняются локально в браузере. Вставленные Session, Token и Cookie сессии не загружаются на какие-либо серверы.