Коды ошибок и состояния HTTP. Какие бывают HTTP-ошибки

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

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

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

Типы ошибок

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

Коды ошибок бывают положительными и отрицательными или успешными и не успешными.

Всего существует 4 типа кодов (хх - сочетание любых цифр):

  • 2xx - запрос выполнен успешно
  • 3xx - запрос успешно перенаправлен - тоже положительный код.
  • 4xx - ошибка - документ не был отправлен пользователю, так как произошла критическая ошибка. Класс кодов 4xx предназначен для указания ошибок со стороны клиента.
  • 5xx - ошибка сервера - критическая ошибка на сервере. Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера.

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

Ошибка 400 - “Плохой запрос”

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

  • Блокировка браузера антивирусом
  • Блокировка брендмауэра Windows браузером
  • Большое количество файлов cookies и данных в сache
  • Перебои в работе интернета

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

Блокировка браузера

  • Изучите настройки вашего антивируса в разделе под названием “Правила для приложений” или схожим с ним.
  • Проверьте, есть ли ваш браузер в списке и каков уровень доверия к нему
  • Повысьте уровень доверия к вашему браузеру, если он низкий
  • Сохраните новые настройки и попробуйте снова зайти в панель управления

Если ошибка сохраняется, то переходите к проверке следующей причины.

Блокировка брендмауэра Windows

  • Попробуйте отключить брендмауэр на время: меню Пуск - Панель управления - Система и безопасность - Брандмауэр Windows - Включение и отключение
  • очистите кэш и куки
  • обновите страницы с ошибкой
  • Если проблема устранена, то для завершения добавьте в брандмауэр разрешенные программы: Пуск - Панель управления - Система и безопасность - Брандмауэр - Разрешение запуска программы через брандмауэр.

Если проблема осталась - продолжайте проверку.

Cache и cookies

  • Удалите cookies и очистите cache: нажмите Shift + Ctrl + Delete в то время, когда браузер открыт.
  • Удалите ненужные файлы
  • Проверьте работу вашего браузера

Перебои в работе интернета

  • Свяжитесь со своим интернет-провайдером и узнайте, проводятся ли у них какие-то работы
  • Уточните, сколько времени займут работы

Ошибка 403 - Доступ запрещен

Ошибка 403 означает, что сервер не может выполнить запрос из-за запрета на доступ к запрашиваемым файлам или страницам. Эта ошибка может возникать по ряду причин. Рассмотрим самые распространенные:

  • Индексный файл index.html не загружен в директорию public_html вашего сайта или является некорректным. Для устранения этой ошибки создайте файл с именем index.html или переименуйте уже имеющийся файл. Возможные варианты для имени файла: index.html, index.htm, или index.php.
  • Для директории, в которой находится запрашиваемый файл, установлены такие права, что веб-сервер Apache не смог прочитать файл на диске сервера. Для устранения этой ошибки попробуйте изменить права доступа в разделе, отвечающем за настройку прав.
  • Файлы сайта загружены в неправильную директорию. Для устранения этой ошибки проверьте, располагаются ли файлы сайта в директории site/public_html, где site - название вашего сайта.

Ошибка 404 - Файл не найден

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

Причины возникновения данной ошибки:

  • Некорректный URL, введенный в адресное поле браузера. Для устранения данной ошибки проверьте, корректно ли указана ссылка.
  • Файл, запрашиваемый по URL, отсутствует на сервере. Для устранения этой ошибки необходимо проверить наличие запрашиваемого файла в директории public_html вашего сайта.

Ошибка 500 - Внутренняя ошибка сервера

Ошибка 500 означает, что на сервере есть внутренняя ошибка. Эта проблема может возникнуть по двум причинам:

  • Невозможно запустить скрипт. Скорее всего указаны неправильные права доступа на папки и файлы. Если на PHP файлы скриптов, размещенных на вашем хостинге, стоят права доступа 777, то исполнение данных скриптов может быть заблокировано сервером. Происходит это из-за того, что права доступа 777 позволяют всем производить любые изменения с данным файлом, что существенно влияет на безопасность и целостность вашего сайта. Для устранения этой ошибки следует проверить права доступа на папки и файлы сайта. Для папок рекомендовано установить права доступа 755, для исполняемых скриптов 600, а для всех остальных файлов 644.
  • Неправильная инструкция в файле.htaccess или наличие в нём неподдерживаемых директив. Возможно, вы ошиблись в написании названия нужной директивы или параметров к ней. Данную ошибку можно устранить, включив лог ошибок error.log. Веб-сервер укажет вам, какую конкретно директиву он посчитал ошибочной - ее нужно будет исправить.

Ошибка 502 - Bad Gateway

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

  • Проблемы в работе прокси-сервера. Для устранения этой ошибки попробуйте набрать в адресной строке браузера ссылку на какой-либо другой сайт. Тем самым вы можете проверить, есть ли доступ в Интернет вообще. Если вы обнаружили, что доступ в Интернет есть, но ваше обращение к конкретному сайту все равно дает ошибку 502, попробуйте удалить файлы cookie s в браузере.
  • Нехватка ресурсов сервера. Это может означать, что нагрузка на сервер превышает ресурсы, доступные на выбранном тарифе хостинга. Уточните у своего хостинг-провайдера о тарифах с большим объемом ресурсов и, в случае необходимости, увеличьте оперативную память или доступный объем диска.

Ошибка 503 - Service Temporarily Unavailable

У каждого аккаунта на сервере хостинга есть определенное количество рабочих процессов, выделенное в соответствии с выбранным тарифным планом. Работа с запросами ведется в порядке очереди, они поступают на сервер, где легкие запросы обрабатываются мгновенно, а тяжелые – медленно. Всякая очередь ограничена тем или иным количеством запросов. Если новый запрос находится за пределами этой границы, принят он не будет и вместо результата браузер выдаст оповещение “Сервис временно недоступен”.

Чтобы исправить данную ошибку нужно знать причины, по которым она может появляться:

  1. Зависание скриптов при передаче больших статичных файлов через PHP. Скрипты работают определенное время, а не постоянно. При окончании времени работы скрипта прерывается передача файла, соответственно файл не будет передан полностью, а также запрос оставит процесс веб-сервера работать еще длительное время. Устранить ошибку вы сможете посредством следующих шагов:
    • Проверить все компоненты и плагины вашей CMS, отключая их по очереди, и найдите самые тяжёлые или испорченные, при работе которых загрузка сайта замедляется. По возможности откажитесь от таких компонентов, либо поищите более быстрый аналог.
    • Проверить наличие у вас медленных запросов- в папке logs вашего аккаунта создается файл mysql-slow.log. Информация в этом файле обновляется раз в сутки и содержит только самые проблемные SQL-запросы.
    • Если в PHP-скриптах используются Include-функции, загружающие части движка, расположенные на одном аккаунте, убедитесь, что в них используется локальный путь, а не URL вида «http://…» . Наличие URL заставляет сервер делать дополнительный HTTP-запрос - это занимает лишнее время и сильно замедляет загрузку сайта.
  2. Большое количество запросов к серверу. Причин возникновения таких запросов несколько:
    • Загружаемый ресурс разбит/содержит ссылки на слишком больше число файлов (картинки, таблицы стилей JS-скрипты), которые подгружаются через отдельные запросы. В этом случае следует объединить ресурсы в один файл, где это возможно.
    • DDoS-атаки, флуды, спамы в комментарии так же могут вызывать большое количество запросов. В случае DDoS-атаки, необходимо определить ее тип, и, согласно ее уровню, предпринять действия по устранению. Подробнее о том, что необходимо делать, если ваш сайт под DDoS-атакой, мы писали в одной из статей нашего блога.

Действия при появлении ошибки

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

06.04.17 1.1K

При посещении сайта клиентское приложение подключается к веб-серверам по сетевому протоколу HTTP . Подобные сетевые соединения поддерживают отправку данных ответа от серверов к клиентам, в том числе содержимого веб-страниц, а также HTTP коды .

Типы кодов ошибок и состояния HTTP

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

  • 100-199: информационный статус;
  • 200-299: статус успешного запроса;
  • 300-399: статус редиректа;
  • 400-499: ошибки клиента;
  • 500-599: ошибки сервера.

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

1. HTTP 200 «OK»

HTTP код 200 возникает, когда сервер успешно обработал запрос и передал контент обратно в браузер. Большинство HTTP-запросов завершается этим статусом. Пользователи редко видят этот код на экране, поскольку браузеры обычно отображают коды HTTP , если возникает какая-либо проблема.

2. Ошибка HTTP 404 «Не найдено»


Сервер не смог найти запрошенную страницу, файл или другой ресурс. Ошибка HTTP 404 указывает на то, что сетевое соединение между клиентом и сервером было успешно выполнено. Возникает, когда пользователь ввел в браузере неправильный URI , или администратор сервера удалил файл, не настроив редирект на новое местоположение. Чтобы устранить эту проблему, пользователи должны набрать правильный URL-адрес .

3. Ошибка HTTP 500 «Внутренняя ошибка сервера»


Сервер получил от клиента действительный запрос, но не смог обработать его. Ошибка HTTP 500 возникает, когда сервер сталкивается с каким-либо техническим сбоем. Например, нехваткой памяти или дискового пространства. Администратор сервера должен исправить эту проблему.

4. Ошибка HTTP 503 «Служба недоступна»


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

5. HTTP 301 «Перемещен навсегда»


Указанный клиентом URI был перемещен в другое место с помощью HTTP-редиректа , который позволяет клиенту получить ресурс с нового местоположения. Браузеры автоматически следуют HTTP-редиректу 301 без необходимости вмешательства со стороны пользователя.

6. HTTP 302 «Найдено» или «Перемещено временно»


HTTP код 302 предназначен для случаев, когда ресурс перемещен временно, а не постоянно. Администратор сервера должен использовать HTTP 302 только в течение коротких периодов обновления (изменения ) контента. Браузеры автоматически выполняют редирект 302 , как и для кода 301 . В версии HTTP 1.1 для указания временных редиректов был добавлен новый код 307 .

7. HTTP 400 «Неверный запрос»


Сервер обнаружил ошибку в данных протокола, полученных от клиента. Обычно это указывает на технический сбой на стороне клиента или повреждением данных в самой сети.

8. HTTP 401 «Не авторизованный»


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

9. HTTP 100 «Продолжить»


Добавленный в версию 1.1 протокола код HTTP ответа 100 был разработан для более эффективного использования пропускной способности сети. Он позволяет серверам подтверждать готовность принимать большие запросы. Протокол Continue позволяет клиенту HTTP 1.1 отправлять небольшое специально сконфигурированное сообщение, запрашивающее ответ сервера с кодом 100 , а затем дожидаться ответа до отправки запроса на дальнейшие действия. Клиенты и серверы HTTP 1.0 не используют этот код.

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

  • 1хх - информационный
  • 2хх - удачное завершение
  • 3хх - перенаправление
  • 4хх - ошибка на стороне клиента
  • 5хх - ошибка на стороне сервера

Существует огромное множество возможных ошибок, но мы опишем только самые основные.

Обзор клиентских и серверных ошибок

Клиентские ошибки (400-499) - результат некорректного запроса со стороны клиента. Несмотря на то, что эти ошибки возникают со стороны клиента, следует уделять им достаточное внимания и рассмотреть все возможные варианты их устранения на стороне сервера.

Сервеные ошибки (500-599) возникают в результате работы сервера, если он не в состоянии обработать запрос пользователя и сталкивается с какими-либо внутренними проблемами.

Заметки по устранению основных проблем

  • Проверяйте серверные логи, из которых вы получите более детальную информацию о возникшей проблеме. Например, такие сервера как Apache и Nginx записывают логи в файлы access.log и error.log , которые вы можете просмотреть.
  • Держите в голове тот факт, что коды ответа HTTP это стандарт, который должен быть соблюден в приложении, обрабатывающем запрос. То есть, полученный код зависит от самого приложения.

После того как мы поверхностно описали основные ошибки, рассмотрим их более детально.

400 некорректный запрос

Такой код означает, что запрос к серверу был сформулирован неправильно, возможно использовался некорректный синтаксис.

Приведем несколько возможных причин возникновения такой ошибки:

  • Куки пользователя, от которых зависит работа сайта, испорчены. Обычна очистка кеша и куки помогает решить проблему.
  • Некорректный запрос по вине самого пользователя, когда, например, запрос был сформирован при помощи curl .

401 доступ запрещен

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

Примером может служит ситуация, когда пользователь пытается получить какой-то ресурс, который защищен при помощи HTTP аутентификации. В таком случае пользователь получит доступ к ресурсу только после того, как введет корректные логин и пароль, которые указаны в файле.htpasswd .

403 отказ в доступе

Этот код означает, что пользователь создал верный запрос, но сервер отказал в выдаче ответа, из-за ограничений прав. Если вы столкнулись с таким кодом, то первым делом стоит рассмотреть следующие причины:

  • Права на файлы

403 код часто возникает в случае, когда пользователь, под которым запущен веб сервер, не имеет достаточных прав на файл, к которому обращается клиент.

Рассмотрим следующие ситуации:

  • Пользователь обратился к индекс файлу сервера http://example.com/index.html
  • Сервер запущен под пользователем www-data
  • На сервере этот файл расположен по адресу /usr/share/nginx/html/index.html

Убедитесь в том, что пользователю www-data открыт доступ к чтению этого файла. Чаще всего это означает, что “доступ для остальных пользователей” должен быть открыт для чтения. Конечно, существует целый ряд устранения проблемы, но следующая команда вам точно поможет:

Sudo chmod o=r /usr/share/nginx/html/index.html

Следующая причина возникновения ошибки 403, как правило созданная специально, это файл.htaccess . В нем можно задать правила доступа к ресурсам, например для определнного диапазона IP адресов.

Просмотрите внимательно этот файл, если вы сталкиваетесь с это пролемой.

Индексный файл не существует

Если пользователь обратился к каталогу, в котором не существует индексный файл, а просмотр содержимого каталога запрещен, то он получит в ответ код 403. Например, пользователь обратился к http://example.com/emptydir/ , в этой директории отсутствует индексный файл, в таком случае сервер вернет код 403.

Если вы хотите разрешить просмотр содержимого каталога, то это можно сделать в настройках сервера.

404 не найдено

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

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

  • Правильно ли введен URL?
  • Присутствует ли файл на сервере? Возможно он был удален или перемещен?
  • Правильно ли указан корневой каталог сервера в настройках?
  • Имеет ли пользователь, под которым работает сервер, корректные права для чтения файла? Как правильно необходимо иметь права не только на чтение, но и на исполнение.
  • Используется ли символическая ссылка для обработки запроса? Если так, то правильно ли настроен ваш сервер для работы с ними?

500 внутрення ошибка сервера

Ошибка означает, что запрос не может быть обработан сервером, по неизвестной внутренней причине.

Самая частая причина - неправильная настройка сервера (некорректный.htaccess) или обращение к неустановленному пакету PHP.

502 ошибочный шлюз

Такая ошибка означает, что сервер является либо шлюзом, либо прокси сервером, который не получает ответ от бекэнд серверов, ответственных за обработку запроса.

Если сервер выполняет роль обратного прокси сервера, например является балансировщиком нагрузки, то убедитесь в том, что:

  • Бекэнд сервера (отвечающие за обработку запроса) исправны
  • Прокси правильно настроен, все бекэнд сервера корректно указаны
  • Сетевое соединение между задействованными серверами рабочее. Если сервера работают при использовании различных портов, проверьте, что файрвол не блокирует эти соединения.

503 служба недоступна

Такой код говорит о том, что сервер или перегружен или находится на обслуживании. Как правило, это означает, что в скором времени сервер станет доступен.

Если сервер в этот момент не на обслуживании, то, как правило, это говорит о том, что серверу недостаточно CPU ресурсов или памяти для обработки запроса. Возможно на вашем сервере стоит ограничение на одновременное количество пользователей.

504 таймаут шлюза

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

Возможные причины:

  • Плохое сетевое соединение
  • Бекэнд сервер слишком медленно обрабатывает запрос ил-за недостатка ресурсов
  • Таймаут сервера слишком короткий

Заключение

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

Если вы видите ошибку «ERR_TOO_MANY_REDIRECTS» (слишком много переадресаций — в буквальном переводе) в своем веб-браузере, вы не одиноки. Об этом сообщили многие пользователи Windows. Эта ошибка возникает с сообщением «Эта веб-страница имеет цикл перенаправления» и блокирует загрузку веб-сайта.

Почему эта ошибка возникает?

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

Как исправить эту ошибку?

Вот четыре способа, чтобы исправить ошибку (слишком много переадресаций):

  • запустите URL в другом браузере;
  • очистите данные своего браузера;
  • проверьте расширения;
  • исправьте дату и время вашей системы.

Запуск URL в другом браузере

Ошибка ERR_TOO_MANY_REDIRECTS может возникнуть из-за используемого веб-браузера. Вы можете попробовать посетить тот же URL-адрес, используя другие решения. Если ошибка по-прежнему сохраняется, проблема может возникнуть со стороны сервера. Возможно, вам понадобится войти на сайт в другое время. Если ошибка не появляется в новом браузере, попробуйте использовать приведенные ниже методы, чтобы устранить проблемы в исходном браузере.

Очистка данных своего браузера

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

В Google Chrome:

  • Введите «chrome://settings» в адресной строке и нажмите «Ввод», затем нажмите «Показать дополнительные настройки» в нижней части страницы «Настройки».
  • Нажмите кнопку «Очистить данные просмотра».

В Mozilla Firefox:

  • Нажмите кнопку «Меню» и выберите «Параметры» .
  • Выберите «Конфиденциальность», а затем очистите свою недавнюю историю.
  • Выберите «Все для диапазона времени» для очистки, а затем нажмите «Очистить сейчас» .
  • Как только данные браузера будут удалены, вы можете проверить, не исчезла ли ошибка.

Проверка расширений браузера

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

Ниже приведены примеры проверки расширений в Chrome и Firefox.
Для Chrome: введите «chrome://extensions» в адресной строке и нажмите Enter. Затем вы можете увидеть все расширения, перечисленные ниже, и можете попробовать включить или отключить любой из них.

  • Для Firefox введите «about: addons» в адресной строке, нажмите Enter, а затем выберите «Расширения». Вы увидите, что все расширения для Firefox перечислены здесь.

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