Об этом инструменте
Парсер cookie разбивает строку HTTP-cookie на её части. Заголовок запроса «Cookie» (та же строка, что вы получаете из document.cookie) — это плоский список «name=value; name=value», тогда как каждый заголовок ответа «Set-Cookie» несёт один cookie плюс его атрибуты: Domain, Path, Expires, Max-Age, Secure, HttpOnly, SameSite, Partitioned и Priority. Этот инструмент читает оба: он разбивает по нужным разделителям, URL-декодирует и снимает кавычки со значений (которые сами могут содержать «=»), сообщает размер каждого cookie в байтах относительно браузерного лимита около 4096 байт и разрешает Expires и Max-Age в читаемые даты и обратные отсчёты.
Используйте его, чтобы разобраться, почему cookie не устанавливается или не отправляется — вставьте строку Set-Cookie, и инструмент укажет на классические ошибки: SameSite=None без Secure, отсутствующий Expires/Max-Age, который незаметно делает его сессионным cookie, чрезмерно большую полезную нагрузку или устаревший Domain с ведущей точкой. Либо вставьте заголовок Cookie, чтобы перечислить, что именно несёт запрос, скопировать его в виде JSON для тестовой фикстуры или обнаружить раздутый cookie, замедляющий запросы. «Load my cookies» подтягивает document.cookie для этой страницы, чтобы вы могли тут же осмотреть свои собственные не-HttpOnly cookie.
Всё разбирается локально в вашем браузере — ни один заголовок, значение или cookie никогда не отправляется на сервер, а HttpOnly-cookie намеренно невидимы для document.cookie, поэтому они не появятся под \"Load my cookies\".
Часто задаваемые вопросы
В чём разница между заголовками Cookie и Set-Cookie?
Заголовок Cookie отправляется браузером на сервер в виде одной строки пар «name=value», разделённых точками с запятой, без атрибутов. Set-Cookie идёт в обратном направлении — по одному заголовку на cookie в ответе — и несёт атрибуты вроде Domain, Path, Expires, Max-Age, Secure и SameSite, которые сообщают браузеру, как его хранить и отправлять.
Что побеждает, Max-Age или Expires, когда заданы оба?
Max-Age имеет приоритет. Если заголовок Set-Cookie включает оба, браузеры, поддерживающие Max-Age, используют его и игнорируют Expires; Max-Age — это срок жизни в секундах, тогда как Expires — это абсолютная дата. Max-Age равный 0 или отрицательное значение удаляет cookie немедленно.
Почему мой cookie с SameSite=None отклоняется?
Браузеры требуют атрибут Secure всякий раз, когда используется SameSite=None, чтобы cookie отправлялся только по HTTPS. Set-Cookie с SameSite=None, но без флага Secure отбрасывается — добавьте Secure (и отдавайте по HTTPS), чтобы это исправить.