← Все статьи

SiteGuard12 мин чтения

Ошибка 400 Bad Request: почему запрос отклонён и как это исправить

Ошибка 400 Bad Request означает, что сервер или промежуточный узел отклонил HTTP-запрос как некорректный. Причиной могут быть адрес страницы, cookies, заголовки, данные формы или настройки приложения. Надпись «неверный запрос» сама по себе не показывает, кто допустил ошибку и какое действие поможет.

Посетителю стоит начать с проверки ссылки и данных конкретного сайта. Владельцу — найти запрос, получивший 400, и определить, на каком участке он был отклонён. Ниже разберём оба маршрута: от простой проверки в браузере до анализа JSON, серверных ограничений и журналов. Это поможет восстановить нужное действие и избежать изменений, которые только скрывают причину.

Что означает ошибка 400 Bad Request

Когда браузер открывает страницу, он передаёт адрес, метод запроса, заголовки и, при необходимости, тело с данными. В ответ приходит HTTP-статус. Код 400 относится к классу 4xx: получатель запроса считает, что выполнить его мешает ошибка на стороне клиента. Такое определение приведено в стандарте HTTP RFC 9110.

Слово «клиент» здесь обозначает программу, отправляющую запрос. Это может быть браузер, мобильное приложение, скрипт или другой сервер. Поэтому формулировка не доказывает, что виноват посетитель. Например, человек правильно заполнил форму, но JavaScript собрал неправильный JSON. Исправлять в таком случае нужно код сайта.

Также ответ мог сформировать CDN, обратный прокси или веб-сервер ещё до запуска приложения. Страница с логотипом хостинга либо названием сервера помогает выбрать направление проверки, однако окончательный вывод дают журналы и сопоставление одного запроса на разных уровнях.

Если браузер показывает ошибку DNS, предупреждение о сертификате или тайм-аут без HTTP-ответа, это другая ситуация. Надпись «400» внутри интерфейса тоже желательно подтвердить в сетевых запросах: приложение может использовать собственный внутренний код. В этой статье речь именно об HTTP-статусе.

Как сузить поиск по симптомам

Перед изменениями определите границы проблемы. Проверьте, открывается ли главная страница, появляется ли ошибка до входа в аккаунт и какое действие её вызывает. Эти наблюдения обычно полезнее, чем последовательное выполнение всех советов из поисковой выдачи.

НаблюдениеЧто проверить сначалаЧто результат не доказывает
В другом браузере страница открываетсяCookies, расширения и состояние профиляЧто серверная часть полностью исправна
После авторизации возникает 400Сессию, размер cookies, параметры входаЧто нужно обязательно менять пароль
Главная работает, форма выдаёт ошибкуЗапрос отправки и ответ его обработчикаЧто весь сайт недоступен
Ошибка появляется только с одной ссылкойПуть, параметры и кодирование URLЧто проблема связана с интернетом
Есть текст Request Header Or Cookie Too LargeРазмер заголовков и серверные ограниченияЧто достаточно увеличить лимиты
Сбой начался сразу после обновленияИзменения приложения, прокси и правил защитыЧто любое совпавшее обновление является причиной

Ведите короткую запись: действие, результат, время. Меняйте по одному условию. Если одновременно очистить браузер, отключить расширения и поменять сеть, исчезновение ошибки не объяснит, какой шаг помог. Для владельца это потерянная возможность устранить повторяющуюся причину.

Как исправить ошибку 400 посетителю сайта

1. Проверьте адрес и откройте страницу через меню

Убедитесь, что ссылка скопирована полностью и к ней не добавились кавычка, пробел или знак из сообщения. Откройте главную страницу, затем перейдите к нужному разделу через навигацию. Если переход работает, а сохранённая ссылка возвращает 400, сообщите поддержке именно об этой ссылке.

Не удаляйте параметры наугад в адресах оплаты, подтверждения почты и восстановления доступа: они могут содержать идентификатор операции. Для обычной страницы безопаснее получить новую ссылку через интерфейс. Если ошибка появилась после отправки заказа или платежа, сначала проверьте его состояние в аккаунте, чтобы не повторять действие без необходимости.

2. Сравните с другим браузером или чистым профилем

Откройте тот же адрес в другом браузере. Для публичной страницы также подходит приватное окно. Успешная загрузка показывает, что различия между сеансами имеют значение: это могут быть cookies, расширения, настройки либо состояние входа.

Сравнение страницы после авторизации с анонимной страницей неполное. Вход может включать другой маршрут и дополнительные проверки. Кроме того, приватный режим меняет условия работы cookies. Поэтому результат используйте как подсказку, а не как окончательный диагноз. Отдельно отметьте, повторилась ли ошибка после входа в аккаунт.

3. Удалите cookies только проблемного сайта

Если другой профиль работает, а обычный нет, попробуйте удалить данные конкретного домена. Предварительно сохраните незавершённый текст: после удаления cookies может потребоваться повторный вход, а часть локальных настроек сбросится.

В Chrome на компьютере откройте настройки конфиденциальности, раздел сторонних cookies и список разрешений и данных сайтов. Найдите нужный домен и удалите его данные. Актуальный порядок доступен в справке Chrome; названия пунктов могут отличаться между версиями. Затем заново откройте сайт и повторите проблемный переход.

Не начинайте с удаления всей истории и сохранённых паролей. Эти действия затрагивают другие сайты и обычно не нужны для локальной диагностики. Если очистка помогает лишь ненадолго, сообщите владельцу о повторении: вероятно, сайт снова создаёт состояние, которое приводит к ошибке.

4. Проверьте расширения

Временно отключайте по одному расширения, влияющие на страницы и сетевые запросы: блокировщики, средства изменения заголовков, инструменты автоматического заполнения. После каждого изменения повторяйте один и тот же сценарий. Если причина найдена, обновите расширение или настройте исключение для нужного сайта.

Не отключайте корпоративную защиту и управляемые настройки устройства самостоятельно. Если проблема возникает только на рабочем компьютере, передайте администратору URL и время сбоя. Установка другого браузера тоже не всегда решает ограничение, действующее на уровне всей рабочей сети.

5. Уточните данные формы или загружаемого файла

Если 400 появляется после отправки формы, проверьте подсказки рядом с полями, обязательные значения, допустимый формат и размер вложения. Для проверки загрузки можно выбрать небольшой файл поддерживаемого типа без личных данных. Это помогает отделить общую неисправность обработчика от проблемы конкретного вложения.

Большой файл не обязан вызывать именно 400: для превышения допустимого размера содержимого предусмотрен 413, а приложение может возвращать собственное пояснение. Не пытайтесь исправить формат простым переименованием расширения. Если корректные данные отклоняются, сохраните точный текст ответа для поддержки.

6. Обратитесь к владельцу, если простые проверки не помогли

Когда один сценарий не работает в разных браузерах и на другом устройстве, дальнейшая очистка компьютера мало что добавит. Напишите, какое действие нужно выполнить, где появляется ошибка и какие проверки уже сделаны. Временное ожидание уместно при объявленных технических работах, но постоянный 400 обычно требует изменения запроса или обработки на сайте.

С чего начать владельцу сайта и разработчику

Главная задача — найти конкретный отклонённый запрос. Откройте инструменты разработчика браузера, вкладку Network («Сеть»), затем повторите сценарий. Найдите строку со статусом 400, посмотрите адрес, метод, заголовки, отправленные данные и тело ответа. Возможности просмотра описаны в документации Chrome DevTools.

Разделяйте запрос HTML-страницы и фоновые обращения. Главная может возвращать 200, пока API поиска, входа или оформления заказа отвечает 400. Успешное открытие сайта в браузере администратора поэтому не отменяет жалобу покупателя. Проверять нужно тот же маршрут, способ авторизации и действие.

  1. Установите масштаб. Какие адреса, методы, устройства и группы пользователей затронуты? Есть ли связь с авторизацией?
  2. Найдите первый момент появления. Сопоставьте его с релизами, изменениями CDN, конфигурации сервера и интеграций.
  3. Соберите один воспроизводимый пример. Используйте тестовые данные и зафиксируйте ожидаемое поведение.
  4. Определите источник ответа. Сопоставьте событие в журнале CDN, веб-сервера и приложения по времени и идентификатору запроса.
  5. Проверьте различия. Сравните рабочий и ошибочный запросы: адрес, заголовки, тип содержимого и состав полей.

Отсутствие записи в журнале приложения может означать, что запрос отклонили раньше. Но сначала проверьте, включено ли нужное логирование, совпадает ли часовой пояс и тот ли сервер вы смотрите. Один пустой поиск по журналу ещё не локализует проблему.

Основные причины HTTP 400 и способы исправления

Некорректный URL и кодирование параметров

Проверьте, как приложение собирает адрес: не попадают ли в него незакодированные служебные символы, повреждённые последовательности с процентом или повторно закодированные значения. Особенно внимательно посмотрите ссылки из рекламы, писем и внешних интеграций, если ошибка появилась только у части аудитории.

Для генерации адресов используйте средства работы с URL и параметрами вашей платформы. Ручное соединение строк делает поведение зависимым от содержимого каждого значения. Полезный тест — сравнить обычный запрос и такой же запрос со значениями, содержащими пробелы, кириллицу и специальные символы, в контролируемой тестовой среде.

Неверный JSON, тип содержимого или обязательные поля

Получатель должен понимать, в каком формате пришли данные. Сравните фактическое тело запроса с заголовком Content-Type и контрактом API. Например, JSON требует двойных кавычек вокруг имён полей и не допускает запятую после последнего элемента. Ниже условный пример для проверки синтаксиса, а не запрос к реальному сервису.

Некорректный JSON:
{"email":"test@example.com",}

Синтаксически корректный JSON:
{"email":"test@example.com"}

Корректный синтаксис ещё не гарантирует успешную обработку: API может требовать дополнительные поля или другой тип значения. Проверяйте ответ обработчика и документацию интеграции. Для синтаксически правильного содержимого с неприемлемыми инструкциями существует 422; неподдерживаемый формат может сопровождаться 415. Конкретное приложение может классифицировать ошибки иначе.

Исправление должно находиться там, где формируется неверный запрос. Не подменяйте 400 успешным статусом, сохраняя отказ в теле ответа. Клиенту будет сложнее отличить выполненное действие от ошибки, а журналам и мониторингу — показать реальную проблему.

Request Header Or Cookie Too Large

Такое сообщение указывает на слишком большой заголовок или набор cookies для принимающего узла. Сравните размер и состав заголовков у рабочего и проблемного сеансов. Проверьте, не создаёт ли приложение повторяющиеся cookies и не хранит ли в них растущие данные, которые лучше размещать на сервере.

В Nginx превышение допустимого размера одного поля заголовка может привести к 400; ограничение задаёт large_client_header_buffers. Для слишком длинной строки запроса документация описывает 414. У других компонентов для крупных заголовков может использоваться 431. Подробности есть в документации Nginx и справке MDN о 431.

Увеличивайте ограничения только после измерения и понимания нормального размера запросов. Иначе можно временно скрыть бесконтрольный рост cookies, а следующий прокси всё равно отклонит тот же запрос. Проверьте всю цепочку, условия выдачи cookies, их область действия и удаление устаревших значений. После исправления повторите сценарий с уже накопленными данными пользователя.

Несогласованные прокси, CDN и приложение

Посмотрите, какие преобразования происходят между браузером и обработчиком: меняется ли путь, передаётся ли ожидаемый хост, сохраняются ли нужные заголовки. При появлении ошибки после миграции сравните прежнюю и новую конфигурации на одном воспроизводимом примере.

Проблемы возможны и при противоречивом оформлении тела HTTP-запроса. Например, Cloudflare описывает отклонение запросов с конфликтующими способами указания длины содержимого. Такие заголовки должен правильно формировать HTTP-клиент; ручная их подстановка редко нужна. Конкретное поведение приведено в документации Cloudflare по ошибке 400.

Если подозрение падает на WAF, найдите запись о сработавшем правиле. Не выключайте защиту целиком ради проверки. Сначала подтвердите ложное срабатывание на допустимом запросе, затем скорректируйте конкретное правило или формат данных. Сам по себе 400 не доказывает блокировку защитой.

Как не перепутать 400 с соседними статусами

Для быстрого выбора направления достаточно нескольких различий: 401 связан с отсутствием подходящих данных аутентификации, 403 — с отказом в выполнении, 404 — с отсутствием доступного ресурса. 413 указывает на размер содержимого, 414 — на длину URI, 431 — на размер заголовков. При 422 формат понятен, но содержимое не может быть обработано. Используйте статус вместе с пояснением ответа; название ошибки не заменяет диагностику конкретного приложения.

Как проверить, что ошибка действительно устранена

Повторите исходный сценарий с теми условиями, при которых возникал сбой. Для формы это отправка допустимых тестовых данных и подтверждение результата в системе. Для публичной страницы — открытие того же URL и проверка полученного содержимого. Отдельно убедитесь, что некорректные данные по-прежнему отклоняются понятным образом.

Если проверяете общедоступную страницу своего сайта, можно выполнить обычный GET-запрос через curl. Пример сохраняет заголовки и тело ответа в локальные файлы; замените демонстрационный адрес своим и выберите новые имена файлов, чтобы не перезаписать нужные данные:

curl -sS --connect-timeout 10 --max-time 30 -D check-400-headers.txt -o check-400-body.html "https://example.com/"

Для Windows используйте в этой команде curl.exe вместо curl: в Windows PowerShell 5.1 короткое имя может означать другую команду, что поясняет Microsoft. Параметры --connect-timeout 10 и --max-time 30 ограничивают установление соединения и всю операцию; значения в секундах выбраны для примера. При превышении времени сохраните сообщение curl: оно не является HTTP-статусом 400.

Параметр -D сохраняет полученные заголовки, -o — содержимое. Это проверка одного запроса без браузерной сессии; она не воспроизводит отправку формы или вход в аккаунт. Если пришёл редирект, изучите его адрес и следующий шаг отдельно. Не считайте 200 на главной подтверждением исправления другого маршрута.

После изменения посмотрите журнал за сопоставимый период и убедитесь, что жалобы на нужный сценарий прекратились. Нулевая частота 400 сама по себе не обязательная цель: сервер может правильно отклонять случайные некорректные запросы. Важнее, чтобы допустимые действия пользователей снова выполнялись.

Как уменьшить риск повторных ошибок

Добавьте проверку исправленного случая в процесс выпуска изменений: ссылка с параметрами, старая пользовательская сессия, допустимый файл, нужный вариант JSON. Для маркетинговых кампаний проверяйте конечные ссылки с реальными метками до запуска. Для интеграций сохраняйте рабочий пример запроса и требования к обязательным полям.

Показывайте человеку понятную причину отказа там, где это возможно: какое поле исправить, какой формат допустим и куда обратиться. Сообщение не должно раскрывать внутреннюю конфигурацию или секретные данные. Разработчику нужен идентификатор события, а посетителю — конкретный следующий шаг.

Чтобы быстрее замечать изменение ответа общедоступной страницы, задайте регулярную проверку ожидаемого HTTP-статуса и сохраняйте историю результатов. Если выбираете SiteGuard, уточните поддерживаемые условия проверки и уведомлений. Наблюдение за одним адресом дополняет журналы, но не воспроизводит все пользовательские сессии, формы и POST-запросы: важные сценарии проверяйте отдельно.

Что написать в поддержку

Хорошее обращение позволяет найти событие без долгой переписки. Укажите адрес страницы, действие перед ошибкой, дату и время с часовым поясом, браузер, состояние авторизации и точную надпись. Добавьте идентификатор запроса, если сайт его показывает, и результаты проверок в другом профиле.

Пример: «При отправке формы из раздела доставки получаю HTTP 400. Главная открывается. В другом браузере результат тот же. Проверял 31 октября в 12:40 UTC. Ошибка появляется после выбора вложения; без него отправка проходит». Это условный пример, который следует заменить своими наблюдениями.

Не отправляйте пароли, значения cookies, токены и полный сетевой журнал в публичный чат. Если специалисту нужен HAR-файл или копия запроса, передавайте их через согласованный канал и предварительно проверяйте содержимое. Для первичного поиска обычно достаточно времени, маршрута и идентификатора события.

Частые вопросы

Ошибка 400 означает, что сайт не работает у всех?

Нет. Она может затрагивать одну ссылку, браузерную сессию или операцию. Проверяйте главную страницу и конкретный сценарий отдельно. Масштаб подтверждают наблюдения пользователей и журналы, а не один скриншот.

Поможет ли обновление страницы?

Если запрос остался прежним, постоянная причина обычно сохранится. Одно повторное открытие публичной страницы допустимо для проверки, но многократная отправка формы не исправит неправильные данные. После платежа или заказа сначала проверьте состояние операции.

Нужно ли очищать DNS или менять интернет-провайдера?

Для подтверждённого HTTP 400 это не первые шаги: ответ уже пришёл от HTTP-узла. Начните с адреса, сессии и запроса. Проверка другой сети полезна как сравнение условий, если есть признаки зависимости от сети или прокси.

Почему ошибка вернулась после удаления cookies?

Приложение могло снова создать проблемные данные. Владельцу нужно проверить их размер, количество и правила формирования. Регулярная очистка браузера пользователями — временная мера, которая не заменяет исправление причины.

Можно ли автоматически исправить все ответы 400?

Универсального исправления нет: некорректный JSON, слишком большой заголовок и ошибка маршрутизации требуют разных действий. Практический порядок один: воспроизвести сбой, найти отклонённый запрос, устранить подтверждённую причину и повторить исходный сценарий.

Документация и первоисточники