Ошибка 431 Request Header Fields Too Large: что значит и как исправить
431 Request Header Fields Too Large — сервер не стал обрабатывать запрос, потому что заголовки слишком большие: все вместе или один из них. Раздуть их могут, например, накопившиеся cookie. Посетителю помогает удалить cookie сайта, а разработчику — разобраться, кто их накапливает.
Содержание 10
Что означает код 431
Код 431 описан в RFC 6585 — дополнении к стандарту HTTP. Он значит: сервер не хочет обрабатывать запрос, потому что заголовки слишком большие — все вместе или какой-то один. Во втором случае в ответе стоит назвать, какой именно заголовок не подошёл. Клиент может отправить запрос снова, уменьшив заголовки. Сохранять ответ 431 в кэше нельзя.
Отвечать именно 431 сервер не обязан: при атаке стандарт допускает, что сервер просто оборвёт соединение.
Кто отвечает 431, а кто 400
| Сервер | Ответ на слишком большие заголовки |
|---|---|
| nginx | 400 Bad Request со страницей «Request Header Or Cookie Too Large» |
| Node.js | 431, если заголовки больше 16 КБ — это лимит по умолчанию |
Поэтому код 431 можно увидеть при разработке — например, открывая приложение на Node.js по адресу localhost:3000.
Если вы посетитель
- Откройте сайт в режиме инкогнито. Если там всё работает, дело в cookie этого сайта.
- Удалите cookie сайта в настройках браузера и откройте страницу снова.
- Если ошибка возвращается, напишите владельцу сайта: что-то на сайте накапливает cookie.
Почему 431 появляется на localhost
Cookie не разделяются по портам: приложения на localhost:3000 и localhost:8080 получают одни и те же cookie для localhost. Если вы запускаете на своём компьютере разные проекты, их cookie копятся вместе и уходят в каждом запросе к localhost, пока заголовки не превысят лимит.
Удалите cookie для localhost в разделе хранилища инструментов разработчика браузера и перезагрузите страницу.
Как поднять лимит в Node.js
Лимит можно задать при запуске:
node --max-http-header-size=32768 server.jsили при создании сервера (с версии Node.js 13.3.0):
http.createServer({ maxHeaderSize: 32768 }, handler);Значения указывают в байтах; по умолчанию лимит — 16 384 байта. Свойство http.maxHeaderSize только показывает текущий лимит, изменить его нельзя.
Но сначала найдите, что раздувает заголовки: если cookie продолжают копиться, поднятый лимит лишь отложит ошибку.
Что раздувает заголовки
- Cookie счётчиков, онлайн-чатов, рекламы и A/B-тестов — каждый скрипт добавляет свои.
- Токены входа (например, JWT) в cookie или в заголовке Authorization: в них бывает много данных.
- Cookie, которые сайт дописывает при каждом визите и никогда не удаляет.
Если перед приложением стоит nginx
Тогда слишком большие заголовки может отклонить уже nginx — и ответит он не 431, а 400. Лимит в nginx задаёт директива large_client_header_buffers; как её поднять, рассказано в разборе ошибки 400. Поднимайте оба лимита — и в nginx, и в приложении.
Чем 431 отличается от соседних кодов
| Код | Когда возникает |
|---|---|
| 400 | Запрос испорчен; nginx отвечает им и на слишком большие заголовки |
| 413 | Слишком большое тело запроса |
| 414 | Слишком длинный адрес |
| 431 | Слишком большие заголовки запроса — например, cookie |
Источники
- RFC 6585, раздел 5 — определение кода 431; раздел 7.3 — сервер может оборвать соединение.
- RFC 6265, раздел 8.5 — cookie не разделяются по портам.
- Документация Node.js: http.maxHeaderSize и параметры запуска.
- Документация nginx: large_client_header_buffers.
- Исходный код nginx — страница «Request Header Or Cookie Too Large».
Сверено 6 октября 2026 года.
Что почитать дальше
- Ошибка 400 Bad Request — как поднять лимит заголовков в nginx.
- Хостинг для Python и Node.js — где запускать приложения.
- Ошибка 413 Request Entity Too Large — когда слишком большое тело запроса.
- Коды ответа HTTP — полный список с расшифровкой.
Проверено и обновлено: 07.10.2026