HTTP 400: Плохой запрос

Если вы ежедневно пользуетесь Интернетом, то наверняка бывали случаи, когда все шло не совсем так, как планировалось. Иногда ваш браузер отображает код состояния вместо желаемого содержимого сайта. Когда веб-сервер и клиент (то есть браузер) взаимодействуют друг с другом, они передают сообщения о состоянии. Только при возникновении ошибки вы увидите загадочное сообщение об ошибке, отображаемое вашим браузером. Код HTTP 400 указывает на то, что что-то пошло не так с запросом клиента. Мы объясним, что именно означает сообщение об ошибке, и дадим советы по решению проблемы.

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

С помощью кодов состояния веб-сервер сообщает клиенту статус запросов. Если сервер возвращает сообщение 200 (которое вы обычно не видите при серфинге), это означает, что все в порядке. Запрос был успешным, и нужный контент был передан. Совсем другая ситуация, когда показываются коды 400 и 500, поскольку это указывает на различные типы ошибок.

Все коды 1xx являются информационными, а все коды 2xx — успешными. Пользователи Интернета обычно видят коды от 3xx и далее: они означают, что связь была успешной, но клиенту необходимо выполнить дополнительный шаг. Большинство этих дополнительных шагов связано с переадресацией, которую браузер выполняет автоматически, и которую вы замечаете лишь в некоторых случаях.

Совсем иначе обстоит дело с сообщениями об ошибках: если ошибки 5xx относятся к серверу, то все коды 4xx связаны с ошибочными запросами клиента. Наиболее известным сообщением является ошибка 404 Not Found. Причиной этого сообщения обычно является либо неправильно написанный URL, либо удаленный контент.

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

  • Неправильный URL-адрес: Как и ошибка 404, ошибочный запрос генерируется, если пользователь неправильно вводит интернет-адрес или, например, вставляет специальные символы, которые не разрешены.
  • Неправильные куки: Если cookies в вашем браузере устарели или некорректны, это еще одна причина, по которой может возникнуть ошибка 400.
  • Устаревшие записи DNS: Ваш кэш DNS может содержать данные, которые ссылаются на неправильные IP-адреса.
  • Слишком большие файлы: Если вы пытаетесь загрузить особенно большие файлы, сервер может отказаться их принимать. Сервер классифицирует это как ‘Bad Request’.
  • Слишком длинный заголовок: При обмене данными клиент и сервер используют заголовок для определения запроса. Некоторые веб-серверы устанавливают верхний предел длины заголовков.

Когда вы получаете сообщение об ошибке ‘HTTP 400 Bad Request’, не сразу понятно, в чем заключается проблема взаимодействия. Однако если целевой веб-сервер использует IIS 7.0, IIS 7.5 или IIS 8.0, более подробную информацию можно получить из кода состояния:

  • 400.1: Недопустимый заголовок назначения
  • 400.2: Неверный заголовок глубины
  • 400.3: Неверный заголовок If
  • 400.4: Неверный заголовок перезаписи
  • 400.5: Неверный заголовок Translate
  • 400.6: Неверное тело запроса
  • 400.7: Неверная длина содержимого
  • 400.8: Неверный таймаут
  • 400.9: Неверный токен блокировки

Ошибка 400 возникает не только при работе в Интернете. Другие программы, например, почтовые клиенты, также могут получать этот код состояния при взаимодействии с сервером.

Как исправить ошибку 400 Bad Request

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

Неправильный URL-адрес

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

Проблема также может быть связана с устаревшими или некорректными файлами cookie. Чтобы исправить это, просто удалите соответствующую запись в браузере. Когда вы снова посетите веб-сайт, программа создаст новый файл cookie.

Факт

В файлах cookie хранится информация о посещении веб-сайта, поэтому веб-сервер знает, что вы посещали веб-сайт в прошлом и какие действия вы там совершали. Законы о файлах cookie защищают конфиденциальность пользователей Интернета при использовании файлов cookie.

Неправильная запись DNS

Другое решение, которое вы можете попробовать, — удалить кэш DNS. Когда вы просматриваете Интернет, вводимые вами доменные имена преобразуются в IP-адреса, с помощью которых и происходит подключение к Всемирной паутине. Для этого необходимо сначала выполнить разрешение имен с помощью сервера имен. Чтобы сократить этот процесс, ваш компьютер временно хранит собранные данные в кэше DNS. Однако при следующем вводе домена в браузер, если запись еще не была автоматически удалена из кэша, разрешение имени будет происходить непосредственно из кэша. Если эта запись повреждена или больше не актуальна, появится сообщение ‘HTTP Bad Request’.

Чтобы удалить неверную запись, необходимо удалить весь кэш DNS. Это можно сделать, запустив командную строку в Windows и введя эту команду для удаления кэша:

ipconfig /flushdns

Для систем Mac команда зависит от версии используемой ОС. Все команды вводятся через терминал:

  • OS X 10.4 (Tiger): lookupd -flushcache
  • OS X 10.5 (Leopard): dscacheutil -flushcache
  • OS X 10.6 (Снежный барс): dscacheutil — flushcache
  • OS X 10.7 (Lion): sudo killall -HUP mDNSResponder
  • OS X 10.8 (Горный лев): sudo killall -HUP mDNSResponder
  • OS X 10.9 (Mavericks): dscacheutil -flushcashe; sudo killall -HUP mDNSResponder
  • OS X 10.10 (Yosemite) (10.10.1 — 10.10.3): sudo discoverutil udnsflashcaches
  • OS X 10.10 (Yosemite) (10.10.4+): sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • OS X 10.11 (El Capitan): sudo killall -HUP mDNSResponder
  • macOS 10.12 (Sierra): sudo killall -HUP mDNSResponder

Проблемы с полями заголовков HTTP

Как пользователь Интернета: удалите куки и перезагрузите браузер

Ошибка HTTP 400 возникает, если заголовок HTTP слишком длинный. В принципе, заголовки не имеют ограничения по размеру, однако целевой сервер может установить ограничение. Заголовок состоит из нескольких полей, в которых определяются запросы и ответы. Если параметры обоих вызывающих абонентов совпали, происходит обмен запрошенными данными. В противном случае будет выведено сообщение об ошибке. Поскольку при этом происходит обмен данными между браузером и веб-сервером, а ошибки 400 обычно вызваны проблемами с клиентом, вероятно, ошибка вызвана браузером. Лучший способ проверить, может ли ваш браузер по умолчанию быть причиной проблемы: временно переключитесь на другой браузер.

Если страница может быть доступна с помощью тестового браузера, переключитесь обратно на исходный браузер. Удалите все свои файлы cookie (если вы еще этого не сделали). В целях безопасности лучше удалить их все, а не только один. Cookies передаются в заголовке, и именно так веб-сервер узнает о вашем предыдущем посещении. Если браузеру приходится обрабатывать слишком много запросов, это может означать, что заголовок превысит лимит длины.

Если это решение не помогает, можно попробовать полностью переустановить браузер или сбросить его настройки по умолчанию. В зависимости от того, какой браузер вы используете, существуют различные способы сброса настроек. Для Firefox введите about:support for troubleshooting. Здесь вы найдете много информации, которая поможет вам обнаружить ошибки в программном обеспечении. Даже если вы обратитесь в службу поддержки, все равно важно иметь эти данные. На этой странице вы увидите кнопку, позволяющую «очистить Firefox». При нажатии на нее будут удалены расширения и некоторые настройки, но сохранятся ваши текущие настройки.

В Internet Explorer вы можете найти кнопку «Сброс» в опциях интернета на вкладке «Дополнительно» или «Восстановить настройки по умолчанию» (в IE 6). Браузер Microsoft позволяет вам выбрать, хотите ли вы удалить свои личные настройки при сбросе. Поскольку Internet Explorer также относит к этим типам настроек кэш и куки, рекомендуется удалить и их.

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

Как веб-мастер: установите ограничения

Если вы являетесь веб-мастером и посетители жалуются на код ошибки 400, то вам может помочь изменение настроек сервиса. Для того чтобы интернет-пользователи не получали сообщение об ошибке из-за слишком большого HTTP-заголовка, вы можете установить лимит. Однако следует помнить, что при более высоких лимитах увеличивается риск ошибочных запросов. Internet Engineering Task Force (IETF) в своей документации по HTTP 1.1 также рассмотрела тему 400 Bad Request и указала на риск высоких лимитов (контрабандные атаки):

Цитата

«Сервер, получивший поле заголовка запроса или набор полей большего размера, чем он хочет обработать, ДОЛЖЕН ответить соответствующим кодом состояния 4xx (ошибка клиента). Игнорирование таких полей заголовка увеличит уязвимость сервера к атакам контрабанды запросов (Раздел 9.5).»

Протокол передачи гипертекста (HTTP/1.1): Синтаксис сообщения и маршрутизация

Вы хотите увеличить лимит в любом случае? Каждый веб-сервер имеет свой собственный метод. Например, в IIS (ASP.NET) вы можете изменить ‘maxRequestLength’ и ‘maxAllowedContentLength’. Для Apache, с другой стороны, вы можете установить лимит с помощью ‘LimitRequestFieldSize’.

Установите контакт

К сожалению, может случиться так, что вышеуказанные решения не решат проблему. В этом случае вам следует обратиться за помощью в другое место. В принципе, у вас есть два контактных лица, в зависимости от того, отображается ли ошибка HTTP 400 только на определенном сайте или на многих сайтах. Если ошибка возникает только на конкретном сайте, а попытки решить ее не увенчались успехом, вы можете обратиться к оператору сайта. В другом случае (если вы не можете регулярно пользоваться интернетом из-за постоянно появляющегося сообщения 400 Bad Request), вам следует обратиться к своему интернет-провайдеру. Даже если проблема на самом деле не связана с провайдером, служба поддержки может быть в состоянии помочь вам.

В обеих ситуациях вы должны предоставить контактному лицу как можно больше информации. Сюда входят все попытки, которые вы предпринимали до сих пор, чтобы избавиться от надоевшей проблемы. С другой стороны, вам также необходимо предоставить информацию о вашей системе: какую операционную систему и браузер вы используете? Установили ли вы расширения для него? Используете ли вы брандмауэр или выходите в интернет через прокси-сервер? Вся эта информация поможет службе поддержки и веб-мастеру решить проблему. Это позволит вам снова пользоваться Интернетом без появления ошибки 400.

Оцените статью
cdelat.ru
Добавить комментарий