Что означают коды ответа сервера о состоянии страниц сайта
Когда на сервер отправляется запрос получения страницы вашего веб-сайта (например, пользователь открывает страницу в браузере или робот Google сканирует страницу), сервер в ответ на запрос возвращает код состояния HTTP.
Некоторые типичные коды статуса HTTP:
Ниже приводится полный список кодов состояния HTTP. Дополнительную информацию можно также получить на странице посвященной кодам протокола HTTP сайта W3C.
Коды http – 1xx (временный)
Коды состояний, указывающие на временный ответ. Для продолжения запроса необходимо принять меры.
Ожидание продолжения запроса. Сервер возвращает этот код, чтобы указать, что получил первую часть запроса и ждет его продолжение.
101 (Переключение протоколов)
От сервера запрошено переключение протоколов и сервер сообщает, что он выполнит запрос.
Коды http – 2xx (Успешно)
Коды состояния HTTP, свидетельствующие о том, что сервер успешно обработал запрос.

Сервер успешно обработал запрос. Как правило, это означает, что сервер предоставил необходимую страницу. Если это состояние относится к файлу robots. txt, это означает, что робот нашел его успешно.
Запрос прошел удачно и сервер создал новый ресурс.
Сервер принял запрос, но еще его не обработал.
203 (Ненадежная информация)
Сервер успешно обработал запрос, но возвращенная информация может исходить из другого источника.
204 (Нет содержимого)
Сервер успешно обработал запрос, но не возвращает какого-либо содержания.
205 (Восстанавливать значение)
Сервер успешно обработал запрос, но не возвращает какого-либо содержания. В отличие от ответа 204, этот ответ требует восстановления вида документа от запрашивающей стороны (например, очистить формы для ввода новых данных).
206 (Частичное содержание)
Сервер успешно обработал частичный GET запрос.
Коды http – 3xx (Перенаправлено)
В целях исполнения требования необходимы дополнительные действия. Эти коды статуса HTTP часто используются для перенаправления.

300 (Много вариантов)
Сервер может выполнять многие действия в ответ на эти запросы. Сервер может выбрать действие, в зависимости от запроса (user agent) или заданный список позволяет ему выбрать действия.
Запрошенная вами страница была окончательно перемещена в другое место. Когда сервер возвращает этот ответ (на запрос GET или HEAD), автоматически перенаправляет требующего на новое место. Этот код можно использовать, чтобы сообщить поисковому роботу, что страница или сайт постоянно перемещены на новое место.
302 (Временно перемещено)
Сервер в настоящее время отвечает на запрос с помощью страницы из другого места, но в будущем следует продолжать отправлять запросы в прежнее место. Этот код похож на код 301 в том плане, что на запрос GET или HEAD автоматически перенаправляет требующего в другое место, но не используйте этот код, чтобы информировать поискового робота о переносе страницы или сайта на новое место, потому что робот будет продолжать сканирование исходного расположения.
303 (Проверить другое место)
Сервер возвращает этот код в том случае, если запрашивающий должен для получения ответов отправить отдельный GET запрос в другое место. В случае выполнения всех требований, сервер автоматически перенаправляет в другое место.
Запрашиваемая страница не была изменена с момента последнего запроса. Отправив этот ответ, сервер не возвращает тело страницы.
Необходимо настроить сервер на возвращение этого ответа (HTTP If-Modified-Since), если страница не изменилась с того времени, когда её последний раз запрашивал тот же агент. Это снижает нагрузку на пропускную способность и сервер.
305 (Использовать прокси-сервер)
Запрашивающий может получить доступ к странице, только через прокси-сервер. Вернув этот ответ, сервер также указывает прокси-сервер, который следует использовать.
307 (Временное перенаправление)
Сервер в настоящее время отвечает на запрос с помощью страницы из другого места, но в будущем следует продолжать отправлять запросы в прежнее место. Этот код похож на код 301 в том плане, что на запрос GET или HEAD автоматически перенаправляет требующего в другое место, но не используйте этот код, чтобы информировать поискового робота о переносе страницы или сайта на новое место.
Коды http – 4xx (Ошибка запроса)
Следующие коды состояния указывают на вероятную ошибку в запросе, которая не позволяет серверу обработать этот запрос.

400 (Неверный запрос)
Сервер не распознает синтаксис запроса.
401 (Не авторизован)
Запрос требует идентификации пользователя. Сервер может возвращать этот ответ, если доступ к странице требует авторизации пользователя.
403 (Доступ запрещен)
Сервер отклоняет запрос. Если поисковый робот получает этот код состояния HTTP при попытке индексации правильных страниц сайта (см. Ошибки индексирования на вкладке Сканирование в Инструментах Google для веб-мастеров), вероятно, сервер или хост блокирует доступ роботу googlebot возможность.
Сервер не может найти нужную страницу. Сервер часто возвращает этот код, например, в том случае, когда запрос относится к странице, которой не существует на сервере.
Если на сайте нет файла robots. txt и это состояние отображается на странице запрещенных URL в Инструментах Google для веб-мастеров, то это правильный статус. Однако, если на сайте есть файл robots. txt и, несмотря на это, отображается этот статус, файл robots. txt может иметь неверное имя или находиться в неправильном месте. (Файл должен находиться в корневом каталоге домена и носить имя robots. txt).
405 (Запрещенный метод)
Метод, указанный в запросе, не допускается.
406 (Не допускается)
Запрошенную страницу невозможно вернуть с требуемой характеристикой содержания.
407 (Требуется аутентификация на прокси-сервере)
Этот код состояния аналогичен коду 401, но указывает, что запрашивающий должен проверить подлинность с помощью прокси-сервера. Вернув этот ответ, сервер указывает также прокси-сервер, который надо использовать.
408 (Тайм-аут запроса)
Тайм-аут ожидания ответа от сервера.
Сервер обнаружил конфликт во время выполнения запроса. Сервер должен передать в ответ информацию о конфликте. Сервер может возвращать этот код вместе со списком различий между требованиями в ответ на запрос PUT, которые находятся в конфликте с прежним спросом.
Сервер возвращает этот ответ, когда запрошенный ресурс удален без возможности восстановления. Это ответ похож на код 404 (Не найдено), но иногда используется вместо кода 404 для ресурсов, которые ранее существовали, но были удалены. Если ресурс был окончательно перенесен, следует использовать код 301, чтобы указать новое местоположение ресурса.
411 (Обязательно указать длину)
Сервер не принимает запросы без правильного значения поля Content-Length (Содержание-Длина) в заголовке.
412 (Не соблюдены условия)
Сервер не соответствует одному из условий, размещенных в запросе.
413 (Слишком большой запрос)
Сервер не может обработать запрос, потому что он слишком большой.
414 (Запрашиваемый URI слишком большой)
Запрашиваемый URI (как правило, URL-адрес) слишком большой и сервер не может его обработать.
415 (Неподдерживаемый тип)
Запрос имеет не поддерживаемый формат.
416 (Не найден нужный диапазон)
Сервер возвращает этот код состояния, когда запрос касается диапазона, отсутствующего на сайте.
417 (Отказ ожидания)
Сервер не может выполнить требования, содержащиеся в поле Expect (Ждите), заголовка запроса.
Коды http – 5xx (Ошибка сервера)
Следующие коды состояния указывают, что произошла внутренняя ошибка сервера при попытке обработки запроса. Эти ошибки, как правило, относится к серверу, а не к требованиям.

500 (Внутренняя ошибка сервера)
Сервер столкнулся с ошибкой и не может обработать запрос.
501 (Функция не реализована)
Сервер не имеет функции, обеспечивающей исполнение запроса.
502 (Недопустимый шлюз)
Сервер, функционирующий в качестве шлюза или прокси, получил недопустимый ответ из расположенного за ним сервера.
503 (Служба недоступна)
Сервер в данный момент недоступен (перегружен или отключен в целях технического обслуживания). Как правило, это временное состояние.
Сервер, функционирующий в качестве шлюза или прокси-сервера, ожидает ответа от расположенного за ним сервера.
Коды ошибок и статусы
Пример кода статуса в заголовке curl
Коды статусов не отображаются в тебе ответа. Они содержатся в хэдере, который может быть не видим по умолчанию.
Заголовок ответа выглядит следующим образом:
Коды состояния довольно тонкие, но когда разработчик работает с API, коды могут быть единственным «интерфейсом», который имеет разработчик. Если получится контролировать сообщения, которые видит разработчик, это будет большой победой юзабилити
Слишком часто коды состояния неинформативны, плохо написаны и сообщают мало или вообще никакой полезной информации пользователю для преодоления ошибки. По большому счету, коды состояния должны помогать пользователям в восстановлении после ошибок.
Можно посмотреть список общих кодов состояния REST API здесь и общий список кодов HTTP статусов здесь. Хотя, возможно, было бы полезно включить несколько стандартных кодов состояния, нет необходимости в полном документировании всех стандартных кодов состояния, особенно если они редко запускаются в API.
Где перечислять HTTP-ответ и коды ошибок
Практичнее, если API будут иметь одну страницу с ответами и кодами ошибок ко всему API. Отдельная страница с перечнем кодов состояния (вместо добавления кода состояния в каждую конечную точку) позволяет более детально описать каждый код без переполнения других частей документации. Такой подход уменьшает избыточность и ощущение информационной перегрузки.
С другой стороны, если какие-то коды состояния и ошибок больше подходят к определенным конечным точкам, чем другие, имеет смысл вывести такие коды состояния и ошибок на страницы с описаниями конечных точек.
Такая стратегия может заключаться в том, чтобы привлечь внимание к каким-либо особенно важным кодам состояния или ошибок для конкретной конечной точки, а затем перейти к централизованной странице «Коды ответов и состояний» для получения полной информации.
Где взять коды ошибок и статусы
Коды состояния и ошибок могут быть неочевидны в документации API. Вероятно, придется попросить разработчиков предоставить список всех кодов состояния и ошибок, которые уникальны для API. Иногда разработчики хардкодят коды состояния и ошибок непосредственно в программном коде, и у них нет простых способов передать полный список (что также затрудняет локализацию).
В результате может потребоваться танцы с бубнами, чтобы найти все коды. В частности, возможно придется сломать API, чтобы увидеть все возможные коды ошибок. Например, если превысить ограничение скорости для определенного запроса, API может вернуть специальную ошибку или код состояния. Такой пользовательский код обязательно нужно задокументировать. В разделе устранения неполадок в API можно специально разместить примеры получения кодов ошибок.
Как перечислять коды ошибок
Коды статусов и ошибок можно привести в виде списка определений или таблицы, например так:
| Status code | Значение |
|---|---|
| 200 | Успешный запрос и ответ |
| 400 | Неверно заданные параметры или другой неверный запрос |
Коды состояния и ошибок помогают в устранении неполадок
Коды состояния и ошибок особенно полезны при устранения неполадок. Таким образом, можно рассматривать коды ошибок как дополнение к разделу по устранению неполадок.
Каждая часть документации может быть полезна в разделе, посвященном устранению неполадок. В разделе, посвященном устранению неполадок, можно описать, что происходит, когда пользователи уходят с проторенной дорожки и спотыкаются в темном лесу. Коды состояния похожи на подсказки, которые помогут пользователям вернуться на правильный путь.
В разделе по устранению неполадок можно перечислить сообщения об ошибках, связанных со следующими ситуациями:
текст ошибки должен точно документироваться, чтобы она легко появлялась при поиске.
Примеры кодов статусов и ошибок
Ниже приведены несколько вариантов разделов с кодами статусов и ошибок.
Context. io
Clearbit не только документирует стандартные коды состояния, но также описывает уникальные параметры, возвращаемые их API. Большинство разработчиков, вероятно, знакомы с кодами 200, 400 и 500, поэтому эти коды не требуют много пояснений. Но если API имеет уникальные коды, описывать их нужно адекватно и подробно.
В Twitter не только описывается код и состояние, но также предоставляется полезная информация по устранению неполадок, потенциально помогая в устранении ошибок. Например, про ошибку 500 не просто сказано, что статус относится к неработающей службе, но и есть объяснение: «Обычно это временная ошибка, например, в ситуации высокой нагрузки или если у конечной точки временно возникают проблемы. Посетите форумы разработчиков на случай, если у других возникнут аналогичные проблемы, или повторите попытку позже».
Mailchimp
Mailchimp предоставляет удобочитаемые и понятные описания сообщений об ошибке. Например, в ошибке 403 вместо того, чтобы просто написать «Запрещено», Mailchimp объясняет причины, по которым можно получить ошибку запрещенного кода. У Mailchimp существует несколько типов ошибок 403. Запрос может быть запрещен из-за отключенной учетной записи пользователя или запроса, направленного не в тот центр обработки данных. В случае ошибки «WrongDataCenter» Mailchimp отмечает, что «она часто связана с неправильно настроенными библиотеками» и ссылается на дополнительную информацию о центрах обработки данных. Такой тип документации кода ошибки очень полезен для пользователей.
Flickr
В Flickr раздел «Коды ответов» встроен в описание каждой адресной темы API. Описания ошибок выглядят короткими. Хотя встраивание кодов ответов в каждую тему делает коды ошибок более заметными, в некоторых случаях такой подход менее полезен. Поскольку он встроен в каждую тему API, описания кодов ошибок должны быть краткими, иначе их содержимое будет перегружено информацией о запросе конечной точки.
Напротив, отдельная страница с перечнем кодов ошибок позволяет более подробно раскрывать каждый код, не вытесняя другую документацию. Отдельная страница также уменьшает избыточность и увеличивает объем информации.
?? Практическое занятие: Коды статусов и ошибок
В своем найденном опен-сорс проекте найдем информацию о кодах статусов и ошибок. Ответим на следующие вопросы:
Проверка ответа сервера
Быстрый и удобный сервис по проверке кода ответа сервера с широким функционалом и расшифровкой HTTP-заголовков. Мобильная версия и кнопка быстрой проверки для удобства работы. Checkmy показывает ответ сервера по заданному URL, это поможет определить существование URL или корректность работы сайта в зависимости от кода, который отдает сервер.
Как проверить ответ сервера
Используйте кнопку быстрого доступа к сервису Checkmy для мгновенной проверки кода ответа сервера нужной страницы сайта.
1. Перетащите кнопку Checkmy на панель закладок своего браузера.
2. Зайдите на страницу сайта, которую хотите проверить.
3. Нажмите кнопку /Checkmy/ в панели закладок своего браузера.
В новой вкладке браузера откроется результат проверки ответа сервера страницы на которой вы находитесь.
Проверка кода ответа сервера
C помощью онлайн сервиса проверки кода ответа сервера вы можете проверить http заголовки, которые выдает сервер при запросе url адреса. Это может быть полезно для того, чтобы узнать включено ли сжатие контента на сервере, проверить исходный код страницы, узнать включена ли поддержка кеширования на сервере и получить другую полезную информацию из заголовков ответа сервера.
Что можно проверить в заголовках сервера:
Заголовки ответа сервера
Список популярных заголовков ответа сервера с пояснением их значений.
Content-Type
Описание формата передаваемого контента. Необходимо для корректного распознавания браузером.
Accept-Encoding
Перечень способов кодирования содержимого ответа при передаче.
Дата генерации передаваемого контента, используется время отвечающего сервера.
Expires
Дата предполагаемого истечения срока актуальности контента.
Last-Modified
Дата последней модификации контента.
If-Modified-Since
Дата, когда необходимо загружать контент, если он изменился с указанного момента.
Location
URL-адрес по которому клиенту следует перейти или URL созданного ресурса.
Server
Список названий и версий веб-сервера и его компонентов с комментариями.
Коды состояний http-сервера
Полный список кодов состояний http-сервера с расшифровкой значения.
| 200 Ok | Запрос клиента обработан успешно и ответ сервера содержит затребованные данные. |
| 201 Created | Этот код состояния используется в случае создания нового URI. Вместе с этим кодом результата сервер выдает заголовок Location, который содержит информацию о том, куда были помещены новые данные. |
| 202 Accepted | Запрос принят, но обрабатывается не сразу. В теле содержимого ответа сервера может быть дана дополнительная информация о данной транзакции. Гарантии того, что сервер в конечном итоге удовлетворит допустимым. |
| 203 Non-Authoritative Information | Информация в заголовке содержимого взята из локальной копии или у третьей стороны, а не с исходного сервера. |
| 204 No Content | Ответ содержит код состояния и заголовок, но тело содержимого отсутствует. При получении этого ответа браузер не должен обновлять свой документ. Обработчик чувствительных областей изображений может возвращать этот код, когда пользователь щелкает на бесполезных или пустых участках изображения. |
| 205 Reset Content | Браузер должен очистить форму, используемую в данной транзакции, для дополнительных входных данных. Полезен для CGI-приложений, требующих ввода данных. |
| 206 Partial Content | Сервер возвращает лишь часть данных затребованного объема. Используется в ответе на запрос с указанием заголовка Range. Сервер должен указать диапазон, включенный в ответ, в заголовке Content-Range. |
| 300 Multiple Choices | Запрошенный URI обозначает более одного ресурса, например, документ переведенный на несколько языков. В теле ответа сервера может находиться перечень конкретных данных о том, как выбрать ресурс правильно. |
| 301 Moved Permanently | Документ перемещен навсегда, новый адрес документа указывается в заголовке Location. Старый адрес больше не используется. |
| 302 Moved Temporarily | Документ перемещен временно, новый адрес документа указывается в заголовке Location. Сейчас нужно запросить документ по новому адресу, но в последствии документ будет доступен по старому адресу. |
| 303 See Other | Документ доступен также и по другому адресу, который указан в заголовке Location. |
| 304 Not Modified | Если при запросе используется заголовок lf-Modified-Since и документ не менялся с указанной даты, то сервер ответит данным кодом. Тело содержимого не посылается, и клиент должен использовать свою локальную копию. |
| 305 Use Proxy | Доступ к документу должен осуществляться через proxy-сервер, указанный в заголовке Location. |
| 500 Internal Server Error | Внутренняя ошибка конфигурации сервера или одного из его компонентов. Запрос не может быть обработан. |
| 501 Not Implemented | Запрос не может быть выполнен сервером. |
| 502 Bad Gateway | Сервер получил недопустимый ответ от другого сервера или прокси-сервера. |
| 503 Service Unavailable | Служба временно недоступна, если известно время восстановления, то будет выдан заголовок Retry-After. |
| 504 Gateway Time-out | Шлюз или сервер превысил время ожидания ответа и ожидание прервано. |
| 505 HTTP Version not supported | Сервер не поддерживает версию протокола HTTP, использованную в запросе. |
Ответы на популярные вопросы
Проверьте ответы на популярные вопросы, возможно вы найдете ответ на свой вопрос.
По-умолчанию Checkmy использует User Agent пользователя, то есть ваш. Если вы хотите его изменить, то можете выбрать любой другой из соответствующего выпадающего списка.
Да, сервис поддерживает IDN-домены и для их проверки не требуется переводить имя домена в punycode. Просто введите введите адрес вашего кириллического домена и проверьте http-код ответа сервера.
Да, конечно, вы можете использовать Checkmy на мобильных устройствах для проверки http-ответа сервера, он быстро загружается и прекрасно выглядит.

Что делает Checkmy
Он позволяет быстро и удобно проверить заголовки ответа http-сервера, опционально поддерживает заголовки Accept-Encoding и If-Modified-Since.
Кому нужно проверять HTTP-заголовки
Корректность HTTP-заголовков ответа сервера необходимо проверять разработчиками, вебмастерам и SEO-оптимизаторам.
https://webznam. ru/publ/google/iveb/kody_sostojanija_oshibok_http/9-1-0-477
https://starkovden. github. io/status-error-codes. html
https://checkmy. ru/