Коды ответа HTTP
Код ответа (состояния) HTTP показывает, был ли успешно выполнен определённый HTTP запрос. Коды сгруппированы в 5 классов:
Если вы получили код ответа (состояния), которого нет в данном списке, в таком случае он является не стандартизированным кодом ответа (состояния), вероятней всего он кастомный сервера.
Следующая таблица содержит список всех кодов и их значения:
Этот ответ отсылается, когда веб сервер после выполнения server-driven content negotiation, не нашёл контента, отвечающего критериям, полученным из user agent.
Этот ответ отсылается, когда запрос конфликтует с текущим состоянием сервера.
Этот ответ отсылается, когда запрашиваемый контент удалён с сервера.
Размер запроса превышает лимит, объявленный сервером. Сервер может закрыть соединение, вернув заголовок Retry-After
Содержание:
Коды ответа сервера: разновидности и их значения
Внешне код ответа сервера страницы — это три цифры, в них зашифрована информация о ее состоянии. При обращении к странице сайта его проверяет и браузеры, и поисковые системы. Собственно, в зависимости от кода ответа сервера поисковые пауки понимают, что от них требуется: сканировать страницу сейчас, отложить сканирование на потом, вычеркнуть URL из дальнейшей проверки и т. д. Иными словами, по этим трём цифрам роботы ориентируются, что им делать дальше.
Для классификации коды ответа сервера страницы были сгруппированы в соответствии с основным значением и разбиты на так называемые классы состояния. Разновидность класса зашифрована в первой цифре ответа, которая и определяет состояние страницы. Две другие цифры раскрывают подробности.
Рядом с кодами ответа сервера указывают краткое определение его значения. Такое определение призвано упростить жизнь людям, которые, в отличие от ботов, могут не знать значение цифровой комбинации.
Существует 5 классов состояния: 1XX, 2XX, 3XX, 4XX и 5XX. Рассмотрим их и познакомимся со значениями основных кодов.
1XX Informational
Когда страница отвечает кодом ответа сервера, начинающимся с индекса 1, мы имеем дело с информационными кодами.
Среди информационных кодов наиболее распространены:
100 Continue — это своеобразное подтверждение от сервера о том, что первоначальный запрос успешно принят, можно продолжать начатые действия (например, сканирование);
102 Processing — запрос получен сервером, и на данном этапе он проходит процедуру обработки. Это не означает, что процесс вот-вот завершится, но отключаться не стоит.
Информационные коды носят временный характер. Они являются подтверждением получения запроса и его обработки.
2XX Success
«Успешные» коды являются знаком подтверждения выполнения обработки в ответ на запрос системы.
200 OK — самый важный код, который характеризует состояние всех страниц сайта, открытых для сканирования. Иными словами, этот код должны содержать все URL, которые должны быть проиндексированы и показаны в выдаче. 200 OK означает, что сервер получил запрос, успешно и без каких-либо проблем его обработал.
207 Multi Status — принятый запрос успешно обработан, в процесс работы выполнено несколько действий.
Коды группы 2XX должны отдавать все страницы ресурса, которые продвигаются в поисковых системах.
3XX Redirection
Перенаправляющие коды информируют робота о необходимости повторного запроса в связи с переездом документа или страницы на новый адрес.
300 Multiple Choices выпадает, когда запрос направлен на адрес, который ссылается на несколько страниц (документов), в этом случае невозможно определить, какую из них необходимо использовать.
301 Moved Permanently — сообщает об окончательной смене места жительства документа. Используется для того, чтобы не потерять «вес» ранее существующей страницы, при переезде на новый адрес. Роботы, видя этот код, не сканируют запрошенную страницу, но переходят по указанной ссылке, продолжая свою работу там.
302 Found / Moved Temporarily отдается страницами, которые были перемещены на другой адрес, но лишь на некоторое время, и в будущем планируется их возвращение на первоначальное место. Код сообщает ботам поисковых систем, что сама страница должна остаться в индексе, перенос носит временный характер.
304 Not Modified позволяет сэкономить ресурсы на повторное сканирование документа или страницы, в которые не было внесено изменений с момента ранее выполненного процесса сканирования. В индексе страницы с таким кодом участвуют, но при этом используются данные, полученные в процессе предыдущего сканирования.
Отдавая ответ кода этой группы, сервер указывает ссылку на новый адрес расположения документа. Эта ссылка содержится в заголовке Location.
4XX Client Error
Коды этого класса сообщают об ошибке, возникшей со стороны клиента.
400 Bad Request сообщает о наличии синтаксической ошибки в запросе.
401 Unauthorized чтобы получить доступ к странице (документу) требуется ввести пароль или пройти регистрацию и повторить попытку запроса после авторизации.
403 Forbidden запрещает доступ к документу. Часто выпадает, если запрещён вход с конкретного IP.
404 Not Found — всем знакомая ошибка «Страница не найдена». Появляется, если документ или страница не найдены в момент запроса, а также в случае ошибки в написании адреса.
Иногда бывает так, что страница внешне соответствует странице 404 ошибки, но на самом деле отдает код 200. Их нужно обязательно найти и исправить.
410 Gone информирует пользователя о том, что им была запрошена удалённая страница (документ). Код 410 означает, что документ существовал ранее, но теперь удалён безвозвратно. В ответ на этот тип ошибки последующая попытка сканирования проводиться не будет, запрос на страницу повторно не направляется и из будущего «списка дел» поискового бота она будет удалена навсегда.
451 Unavailable For Legal Reasons информирует об официальном юридическом запрете использовать запрашиваемый документ. Применяется, например, в рамках защиты авторских прав или наложении вето со стороны государственных структур. Уже ставшей легендой история гласит, что число выбрано не случайно и отсылает нас к известному произведению Рея Брэдбери (451 градус по Фаренгейту является температурой, при которой происходит воспламенение бумаги — метафора цензуре).
Вместе с указанием кода ответа сервер сообщает о характере ошибки. Исключение составляют запросы с методом HEAD.
5XX Server Error
Коды ответа, входящие в группу 5XX, сообщают о сбоях в работе серверов.
500 Internal Server Error может говорить о наличии любой ошибки сервера, которые невозможно отнести ни к одному из заданных кодов этого класса состояния.
503 Service Unavailable сообщает о временных недочётах со стороны сервера, носящих технический характер, например, о чрезмерной загруженности из-за превышения допустимого количества запросов.
504 Gateway Timeout — код, который означает, что окончено время ожидания ответа от вышестоящего сервера, на который посылает запрос основной сервер, являющийся в данном случае прокси-сервером или шлюзом.
505 HTTP Version Not Supported — от сервера пришёл отказ в ответе на запрос из-за использования другой версии протокола HTTP.
Информируя о серверной ошибке, система также указывает причину её возникновения.
Рассмотрев, каким должен быть ответ сервера в наиболее распространённых ситуациях, переходим к способам проверки кода, который отдают страницы сайта. Проверка даёт возможность своевременно получить данные о неверном коде и скорректировать его.
Как проверить код ответа сервера
Существует масса способов, которые можно использоваться, чтобы узнать ответ сервера.
Например, увидеть код страницы интересующего сайта можно в панели разработчика во вкладке Network. В разных браузерах она вызывается разным способом. Если Вы используете Google Chrome, откройте сайт, нажмите F12, в открывшемся окне кликните по вкладке Network и обновите страницу. В левой части открывшегося поля выбираем название страницы. Теперь ищем данные о коде ответа сервера, они указаны в столбце Status.
В сети также можно подобрать под себя сервисы бесплатной проверки. Одним из таких софтов является SEOB. Здесь всё элементарно: для проверки необходимо ввести ссылку на тестируемую страницу сайта и нажать «Проверить заголовки».
Ещё один простой в использовании сервис, не требующий регистрации, — Checkmy. Как и в SEOB, здесь достаточно указать ссылку на страницу сайта или документ и нажать «Отправить запрос». Результат появится перед вами через несколько мгновений.
Названные сервисы, как и практически все бесплатные инструменты проверки, позволяют осуществлять проверку только отдельных адресов. Для массовой проверки придётся использовать более продвинутые платные сервисы, например, Netpeak Spider.
Заставляем коды работать по полной
Сама по себе неприятная для посетителя сайта ситуация, когда вместо необходимой ему информации он видит 404 Not Found, при умелом подходе и капле креатива может поднять настроение юзеру и повысить его лояльность к сайту. Дополнив эти цифры интересными элементами, добавив странице 404 стиля или юмора, можно добиться отличного результата. Рекомендуем не пренебрегать дополнительным инструментом для налаживания доверительных отношений с посетителями сайта.
Зная, как работают коды ответа сервера, можно приступать к проверке и, в случае необходимости, корректировке. Это необходимо для правильной индексации страниц сайта. В противном случае можно не дождаться сканирования важных для продвижения URL или потратить ограниченный краулинговый бюджет на обработку страниц, не подлежащих индексации. Основные страницы, которые вы хотите видеть в поисковой выдаче, должны содержать ответ 200 OK. Не последнее значение имеет правильный подбор кодов для тех страниц, сканирование которых не принесёт особой выгоды, при этом загрузит роботов поисковых систем лишней ненужной работой.
Помимо налаживания рабочих отношений с поисковыми роботами, используя собственную фантазию и нестандартные решения можно проявить заботу о пользователях, что сделает их пребывание на сайте приятным, даже в случае отсутствия запрашиваемых данных.
Какие интересные варианты оформления страницы с кодом 404 встречались вам?
Удобный справочник кодов состояния соединения.
Код состояния HTTP — это часть первой строки ответа сервера при запросах по протоколу.

Содержание.
100.
Информационные
100 Continue — сервер удовлетворён начальными сведениями о запросе, клиент может продолжать пересылать заголовки.
101 Switching Protocols — сервер предлагает перейти на более подходящий для указанного ресурса протокол. Список предлагаемых протоколов сервер обязательно указывает в поле заголовка Update. Если клиента это заинтересует, то он посылает новый запрос с указанием другого протокола.
102 Processing — запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме.
105 Name Not Resolved — возникла ошибка в связи с неверным или отсутствующем IP-адресом DNS-сервера.
Успешные
200 OK — успешный запрос. Клиенту отправлены запрошенные данные.
201 Created — в результате успешного выполнения запроса был создан новый ресурс. Если ресурс не может быть создан в данный момент, то сервер вместо этого должен отобразить код 202.
202 Accepted — запрос был принят на обработку, но она не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как процесс может занять много времени.
203 Non-Authoritative Information — аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника, а из резервной копии, с другого сервера и т.д… Поэтому инфа может быть неактуальной.
204 No Content — сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные.
Используется для того, чтобы позволить осуществить ввод или какие-либо действия без необходимости обновлять документ (страницу).
205 Reset Content — сервер обязывает клиента сбросить введённые пользователем данные, при этом тело сообщения не передаётся, поэтому страницу обновлять не обязательно.
Используется когда пользователь заполняет форму, а сервер посылает браузеру запрос на очистку формы.
206 Partial Content — сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого.
207 Multi-Status — сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus.
226 IM Used — заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров. Введено в RFC 3229 для дополнения протокола HTTP поддержкой дельта-кодирования.
Перенаправление
300 Multiple Choices — по указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список вариантов, давая клиенту сделать выбор.
Такое происходит, когда пользователь использует URL на директорию не самого последнего уровня, и сервер предлагает ему выбор имеющихся файлов или директорий последующего уровня.
301 Moved Permanently — запрошенный документ был перенесен на новый URI адрес которого указанный в поле Location.
Некоторые клиенты некорректно ведут себя при обработке данного кода.
302 Found, 302 Moved Temporarily — запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location.
Изначально представлял собой основной способ создания временного перенаправления. Тем не менее, сегодня существуют и другие – этичные, и неэтичные – способы его применения.
303 See Other — код указывает пользователю на то, что запрашиваемый ресурс можно найти по URL, который отличается от указанного в запросе. Это не обязательно означает, что что-то было перемещено, этот код лишь предоставляет адрес, по которому следует запрашивать подобный ответ.
Этот метод главным образом существует для того, чтобы позволить выводу данных POST-активированного скрипта перенаправить агента пользователя к выбранному ресурсу.
304 Not Modified — сервер возвращает такой код, если документ не изменился с момента последнего посещения сервера клиентом.
В этом коде сообщается о том, что параметры документа If-Modified-Since или If-Match не менялись с момента создания последнего кэша, и нет необходимости в повторной отправке ресурса.
305 Use Proxy — запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси).
306 — использовался раньше, в настоящий момент зарезервирован.
307 Temporary Redirect — запрашиваемый ресурс, на короткое время, доступен по другому URI указанному в поле Location. Этот код был введён вместе с 303 вместо 302-го для избежания неоднозначности.
Ошибки клиента
400 Bad Request — сервер обнаружил в запросе клиента синтаксическую ошибку.
401 Unauthorized — для доступа к запрашиваемому ресурсу требуется аутентификация.
Ответ сервера должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Клиент может повторить запрос, включив в сообщение требуемые для аутентификации данные.
402 Payment Required — предполагается использовать в будущем, сейчас не используется.
Код предусмотрен для платных пользовательских сервисов, а не для хостинговых компаний. Имеется в виду, что эта ошибка не будет выдана хостинговым провайдером в случае просроченной оплаты его услуг.
404 Not Found — самая распространенная ошибка в интернете, основная причина — ошибка в написании адреса Web-страницы.
Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
405 Method Not Allowed — указанный клиентом метод нельзя применить к текущему ресурсу.
В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу, если же указанный метод не применим на всём сервере, то клиенту нужно вернуть код 501 (Not Implemented).
406 Not Acceptable — запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD, то сервер должен вернуть список допустимых характеристик для данного ресурса.
407 Proxy Authentication Required — ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере.
408 Request Timeout — время ожидания сервером передачи от клиента истекло. Клиент может повторить запрос в любое время. Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT.
409 Conflict — запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT.
410 Gone — сервер посылает такой код если ресурс раньше был по указанному URL, но был удалён и теперь недоступен.
Серверу в этом случае неизвестно и местоположение альтернативного документа, например, копии. Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше клиенту передать код 404.
411 Length Required — сервер сообщает, что клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI. Такой ответ естественен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём.
412 Precondition Failed — возвращается, если ни одно из полей запроса не было выполнено.
Иными словами, один или более заголовок запроса был возвращен с атрибутом false.
413 Request Entity Too Large — возвращается в случае, если сервер отказывается обработать запрос по причине слишком большого размера тела запроса.
Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса. Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос.
414 Request-URL Too Long — сервер не может обработать запрос из-за слишком длинного указанного URL. Такую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET, а не POST.
415 Unsupported Media Type — сервер заметил, что часть запроса была сделана в неподдерживаемом формате.
В запросе не указываются какие-либо типы медиа, которые поддерживаются ресурсом или сервером. Например, пользователь запрашивает изображение с расширением файла, которое не поддерживается сервером.
416 Requested Range Not Satisfiable — в поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. Если клиент передал байтовый диапазон, то сервер может вернуть реальный размер в поле Content-Range заголовка.
417 Expectation Failed — по каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса
418 I’m a teapot — код был введен в 1998 году как одна из традиционных первоапрельских шуток IETF в RFC 2324, Hyper Text Coffee Pot Control Protocol.
Не ожидается, что данный код будет поддерживаться реальными серверами.
422 Unprocessable Entity — сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
423 Locked — целевой ресурс заблокирован от применения к нему указанного метода.
424 Failed Dependency — указывает на то, что реализация текущего запроса может зависеть от успешности выполнения другой операции, и если она не будет успешно проведена, то вся обработка запроса будет прервана.
425 Unordered Collection — используется в расширении WebDAV Advanced Collections Protocol. Посылается, если клиент указал номер элемента в неупорядоченном списке, или запросил несколько элементов в порядке, отличающемся от серверного.
426 Upgrade Required — сервер указывает клиенту на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection. Введено в RFC 2817 для возможности перехода к TLS посредством HTTP.
428 Precondition Required — сервер указывает клиенту на необходимость использования в запросе заголовков условий, наподобие If-Match. Введено в черновике стандарта RFC 6585.
429 Too Many Requests — клиент попытался отправить слишком много запросов за короткое время, что может указывать, например, на попытку DoS-атаки. Может сопровождаться заголовком Retry-After, указывающим, через какое время можно повторить запрос. Введено в черновике стандарта RFC 6585.
431 Request Header Fields Too Large — превышена допустимая длина заголовков. Сервер не обязан отвечать этим кодом, вместо этого он может просто сбросить соединение. Введено в черновике стандарта RFC 6585.
434 Requested host unavailable — запрашиваемый адрес недоступен.
444 — возвращается только сервером nginx. Бывают случаи, когда вы можете распознать по неким признакам бота, сканер или хакера. В таких случаях хорошо бы просто закрывать соединение. Вот для таких случаев и создан ответ 444. Собственно NGINX просто посылает в ответ пустой пакет (без заголовков) TCP RST и закрывает соединение.
449 Retry With — возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request. Введено корпорацией Microsoft для WebDAV. В настоящий момент как минимум используется программой Microsoft Money.
451 Unavailable For Legal Reasons — доступ к ресурсу закрыт по юридическим причинам, например, по требованию органов государственной власти или по требованию правообладателя в случае нарушения авторских прав. Введено в черновике IETF за авторством Google, код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту».
456 Unrecoverable Error — возвращается сервером, если обработка запроса вызывает некорректируемые сбои в таблицах баз данных. Введено корпорацией Microsoft для WebDAV.
499 — используется Nginx, когда клиент закрывает соединение до получения ответа.
Ошибка сервера
500 Internal Server Error — любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса.
501 Not Implemented — сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405.
502 Bad Gateway — сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера.
503 Service Unavailable — сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным кажется сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов.
504 Gateway Timeout — сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса.
505 HTTP Version Not Supported — сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP.
506 Variant Also Negotiates — в результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается.
507 Insufficient Storage — не хватает места для выполнения текущего запроса. Проблема может быть временной. Введено в WebDAV.
509 Bandwidth Limit Exceeded — используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем «bw/limited», входящим в панель управления хостингом cPanel, где и был введён.
510 Not Extended — на сервере отсутствует расширение, которое запрашивает клиент. Сервер может дополнительно передать информацию о доступных ему расширениях. Введено в RFC 2774 для дополнения протокола HTTP поддержкой расширений.
511 Network Authentication Required — этот ответ посылается не сервером, которому был предназначен запрос, а сервером-посредником, например сервером провайдера — если клиент должен сначала авторизоваться в сети. Предполагается, что в теле ответа будет возвращена Web-форма авторизации или перенаправление на неё. Введено в черновике стандарта RFC 6585.








