Когда браузер для доступа браузера на страницу просмотра веб отправляет запрос на сервер, где веб. Когда браузер получает и отображает первую страницу, сервер, на котором эта страница будет возвращать (заголовок сервера) в заголовок HTTP код состояния для ответа на запрос содержит браузер.
Коды состояния HTTP на английском языке для кода HTTP статуса.
Вот некоторые коды состояния общих HTTP:
Код состояния HTTP состоит из трех десятичных цифр, первое десятичное число определяет тип кодов состояния, последние две цифры не классифицированы эффект. код состояния HTTP делится на пять типов:
HTTP Список кодов состояния:
Код состояния | Код состояния английское название | китайский описание |
---|---|---|
100 | продолжать | Продолжить. Клиент должен продолжать свою просьбу |
101 | Переключение протоколов | Переключение протоколов. Протокол коммутации сервера на основании запроса клиента. Может только переключиться на более продвинутый протокол, например, чтобы перейти на новую версию протокола HTTP |
200 | хорошо | Запрос был успешным. В основном используется для GET и POST запросов |
201 | созданный | Он был создан. Успешные запросы и создан новый ресурс |
202 | Принято | Принято. Мы приняли эту просьбу, но не завершил процесс |
203 | Неавторитетная информация | Неавторизованный доступ к информации. Запрос был успешным. Но не в оригинальной мета информации, возвращаемый сервером, но копия |
204 | Нет Содержание | Пустой. Сервер успешно обработал, но не вернулся содержание. В отсутствие обновленных страниц, чтобы обеспечить браузер продолжает отображать текущий документ |
205 | Reset Content | Сброс содержимого. Сервер обработки успешно, пользовательский терминал (например: браузер) должен вернуться к режиму просмотра документа. Этот код возврата может очистить поля формы вашего браузера |
206 | Частичное Содержание | Часть. Сервер успешно обработал часть запроса GET |
300 | множественным выбором | Разнообразие вариантов. Запрос ресурсов может включать в себя множество позиций, соответствующих возвращать список характеристик ресурсов и адреса для пользовательского терминала (например: браузер) Выберите |
301 | Переехал Постоянно | Переехал Постоянно. Запрашиваемый ресурс был окончательно перемещен на новый URI, возвратит информацию, включая новый URI, браузер автоматически будет направлено на новый URI. Любой будущий новый запрос должен быть заменен на новый URI |
302 | найденный | Временный ход. Подобно 301. Но ресурс временно перемещен. Клиент должен продолжать использовать оригинальный URI |
303 | См Другие | Посмотреть другой адрес. Подобно 301. Используйте GET и POST запросы View |
304 | Not Modified | Unmodified. Запрошенный ресурс неизмененной, сервер возвращает этот код статуса, он не возвращает каких-либо ресурсов. Клиент, как правило, кэширует ресурсы, посещаемые путем предоставления заголовка указывает на то, что клиент желание вернуться только после указанной даты модифицированного ресурса |
305 | Использовать прокси-сервер | Используйте прокси-сервер. Запрошенный ресурс должен быть доступен через прокси-сервер |
306 | неиспользуемый | Он был оставлен без присмотра HTTP код статуса |
307 | Временное перенаправление | Временное перенаправление. Подобно 302. запрос использования GET перенаправляется |
400 | Bad Request | Синтаксическая ошибка в запросах клиента, сервер не может понять, |
401 | неразрешенный | Запрос требует аутентификации пользователя |
402 | Требуется оплата | Зарезервировано для будущего использования |
403 | запрещенный | Сервер понял запрос на запрос клиента, но отказался выполнять эту просьбу |
404 | Не найдено | Сервер не может найти ресурсы (Web) по просьбе клиента. С помощью этого кода, разработчики сайта могут установить "ресурс, который вы запросили, не может быть найден" персональная страница |
405 | Method Not Allowed | Заказчик поручает, запрещенные методы |
406 | Не Приемлемый | Сервер не может выполнить запрос на основе характеристик контента, запрошенных клиентом |
407 | Требуется проверка подлинности прокси | Запрос требует прокси-аутентификации, подобный 401, но отправитель должен использовать авторизацию прокси |
408 | Запрос Тайм-аут | Сервер ожидает клиента, чтобы послать запрос слишком долго, тайм-аут |
409 | конфликт | Столкновения сервера выполнить запрос PUT клиента может возвращать этот код, когда сервер обрабатывает запрос |
410 | прошло | Ресурс по требованию клиента уже не существует. В отличие от 410 404, если ресурс теперь безвозвратно удалены, прежде чем вы можете использовать 410 код, веб-дизайнер может указать ресурсы с помощью нового кода местоположения 301 |
411 | Длина Обязательный | Сервер не смог обработать сообщение запроса, отправленного клиентом без Content-Length |
412 | Precondition Failed | Предпосылки клиент запрашивает информацию ошибок |
413 | Слишком большой размер запроса | Так как объект запроса слишком велик, сервер не может обработать, так что запрос будет отклонен. Для того, чтобы предотвратить непрерывную запрос клиента, сервер может закрыть соединение. Если сервер временно не может обрабатывать только, он будет содержать информацию о отклике Retry-After |
414 | Request-URI Too Large | URI слишком длинный запрос (URI, как правило, URL-адрес), сервер не может обработать |
415 | Неподдерживаемый Тип носителя | Сервер не смог обработать запрос, поставляемой вместе с медиа-форматов |
416 | Запрошенный диапазон не выполнима | запрос клиента Диапазон недопустим |
417 | Expectation Ошибка | Сервер не может удовлетворить запрос заголовок Expect |
500 | Внутренняя ошибка сервера | Внутренняя ошибка сервера и не смог выполнить запрос |
501 | Не реализовано | Сервер не поддерживает запрашиваемую функцию, не может выполнить запрос |
502 | Bad Gateway | В качестве сервера шлюза или прокси-сервер, полученный от удаленного сервера на недопустимый запрос |
503 | Сервис недоступен | Потому что он перегружен или обслуживания системы, сервер временно не может обработать запрос клиента. Длина задержки, она может быть включена в Retry-After информации заголовка сервера |
504 | Шлюз Тайм-аут | Действуя в качестве шлюза или прокси-сервер, а не своевременный запрос на доступ с удаленного сервера |
505 | Версия HTTP не поддерживается | Сервер не поддерживает запрошенный HTTP версия протокола не закончить обработку |
Коды статуса и ошибок HTTP похожи на короткое сообщение от сервера, которое выводится в верхней части веб-страницы. На самом деле это не часть веб-страницы. Это сообщение, возвращаемое при обращении к серверу, позволяет узнать, как обстояли дела, когда сервером был получен запрос на просмотр страницы.
Такие сообщения возвращаются каждый раз, когда браузер взаимодействует с сервером, даже если вы не видите их. Коды статуса HTTP являются бесценным инструментом для диагностики и исправления ошибок, возникших в конфигурации сайта.
В этой статье представлены наиболее распространенные коды статуса и коды ошибок.
Каждый раз, когда вы кликаете по ссылке или вводите URL-адрес и нажимаете «Enter », браузер отправляет запрос на сервер. Он получает и обрабатывает запрос, а затем отправляет обратно запрашиваемые ресурсы вместе с HTTP-заголовком .
Коды статуса доставляются в браузер в HTTP-заголовке . Хотя вы их не видите. Но когда что-то пошло не так, пользователю отображается код статуса в браузере. Это способ сервера сказать: «Что-то не так. Вот код, который объясняет, что именно ».
Код статуса HTTP Google 404
Чтобы увидеть коды статуса, которые браузер обычно не отображает, потребуются специальные инструменты. Для популярных браузеров, таких как Chrome и Firefox , доступны соответствующие расширения. Также существует много сервисов для отображения заголовков, например Web Sniffer .
Чтобы увидеть код статуса HTTP с помощью одного из этих инструментов, найдите строку, расположенную в верхней части отчета, в которой указано: “Status: HTTP/1.1 ”. После нее указан код статуса, возвращаемый сервером.
Коды статуса HTTP разделены на 5 классов:
Существует более 40 различных кодов статуса сервера. Но тех, с которыми вы будете сталкиваться регулярно меньше дюжины. Ниже приводится список кодов статуса HTTP :
200: «Все в порядке ». Это код, который возвращается, когда веб-страница или ресурс действуют точно так, как ожидается.
301: «Запрошенный ресурс был перемещен навсегда ». Этот код возвращается, когда веб-страница или ресурс заменяется другим ресурсом. Он используется для постоянного редиректа URL-адресов .
302: это http-ошибка «Запрошенный ресурс перемещен, но был найден ». Этот код используется для указания того, что запрошенный ресурс был найден, но не в том месте, где это ожидалось. Он используется для временного редиректа URL-адресов .
304: «Запрошенный ресурс не был изменен с момента последнего обращения к нему ». Сообщает, что ресурсы, хранящиеся в кэше браузера, не изменились. Он используется для ускорения доставки веб-страниц за счет повторного использования ранее загруженных ресурсов.
http-ошибка 403: «Доступ к этому ресурсу запрещен ». Возвращается, когда пользователь пытается открыть ресурс, для которого у него нет прав доступа. Например, попытка просмотра неавторизованным пользователем контента, защищенного паролем, может привести к ошибке 403 .
404: «Запрошенный ресурс не найден ». Наиболее распространенное сообщение об ошибке. Означает, что запрошенный ресурс не существует и сервер не знает, существовал ли он когда-либо.
405: «Метод не разрешен ». Генерируется, когда хостинг-сервер (исходный сервер ) поддерживает полученный метод, но целевой ресурс отсутствует.
406: «Неприемлемый ответ ». Запрошенный ресурс способен генерировать только контент, неприемлемый в соответствии с заголовками Accept , отправленными в запросе.
408: «Время ожидания сервером поступления остальной части запроса из браузера истекло ». Генерируется, когда сервер прерывает обработку после истечения времени ожидания полного запроса от браузера. Другими словами, сервер не получил полный запрос, отправленный браузером. Одной из возможных причин может быть перегрузка сети, приводящая к потере пакетов между браузером и сервером.
410: «Запрошенный ресурс отсутствует и не будет возвращен ». Подобен коду 404 «Не найден », за исключением того, что код статуса 410 , указывает, что данный статус ожидается на постоянной основе.
429: это http-ошибка «Слишком много запросов ». Генерируется сервером, когда пользователь отправил слишком много запросов в заданный промежуток времени (ограничение по скорости ). Иногда причиной ошибки могут быть боты, пытающиеся получить доступ к сайту. В этом случае может потребоваться изменение URL-адреса входа в панель администрирования WordPress .
499: «Клиент закрыл запрос ». Возвращается NGINX , когда клиент закрывает запрос, пока NGINX все еще обрабатывает его.
500: «На сервере возникла ошибка, и запрос не мог быть завершен ». Общий http-код , который также называют «внутренняя ошибка сервера ». На сервере что-то пошло не так и запрошенный ресурс не был доставлен. Этот код генерируется сторонними плагинами, при сбоях PHP-кода или подключения к базе данных.
501: «Не реализовано ». Эта ошибка указывает на то, что сервер не поддерживает функции, необходимые для выполнения запроса. Ошибка почти всегда связана с самим сервером, и для ее решения нужно обратиться в службу поддержки хостинг-провайдера.
502: это http-ошибка «Некорректный шлюз ». Означает, что один сервер получил неверный ответ от другого. Иногда запрос занимает слишком много времени, и поэтому отменяется или удаляется сервером, а соединение с базой данных прерывается.
503: это http-ошибка «В данный момент сервер не может обработать запрос ». Запрос не может быть обработан прямо сейчас. Этот код возвращается перегруженным сервером, который не может обрабатывать новые запросы.
504: «Сервер, действующий как шлюз, не смог дождаться ответа от другого сервера ». Возвращается, когда в обработке запроса было задействовано два сервера, и на первом сервере истекло время ожидания ответа от второго.
В приведенном выше списке поясняется большинство кодов статуса HTTP , с которыми вы можете столкнуться. Вот ресурсы, на которых можно более подробно узнать о редких кодах статуса HTTP , не рассмотренных в нашей статье:
Перевод статьи «A Complete Guide and List of HTTP Status Codes» был подготовлен дружной командой проекта
Код состояния HTTP зашифрован в 3-х цифрах. Первая цифра указывает на класс состояния (группа кодов). Вторая и третья цифра – порядковый номер кода ответа.
Код состояния HTTP возвращается сервером. Он является частью первой строки ответа сервера при запросах по протоколу HTTP и указывает на то, был ли успешно выполнен определенный HTTP запрос.
Коды сгруппированы в 5 классов: информационные (1xx), успешные (2xx), перенаправления (3xx), ошибки клиента (4xx) и ошибки сервера (5xx).
Краткая характеристика классов:
Ниже представлена таблица, которая в виде шпаргалки содержит следующую информацию: все цифровые обозначения кодов состояния, название кодов — поясняющая фраза на английском языке с переводом на русский, а также краткое описание каждого ответа сервера.
Группа | Код ответа | Название кода | Описание ответа сервера |
---|---|---|---|
Информационные | 100 | Continue (Продолжай) | Сервер удовлетворен начальными сведениями о запросе, клиент может продолжать пересылать заголовки. Появился в версии HTTP/1.1. |
101 | Switching Protocol (Переключение протоколов) | Сервер предлагает перейти на более подходящий для указанного ресурса протокол; список предлагаемых протоколов сервер обязательно указывает в поле заголовка Upgrade . Если клиента это заинтересует, то он посылает новый запрос с указанием другого протокола. | |
102 | Processing (Идет обработка) | Запрос принят сервером, но на его обработку понадобится длительное время. Этот ответ используется для того, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме. Появился в WebDAV. | |
Успешные | 200 | ОК | Успешно обработанный запрос. «Успешность» зависит от метода HTTP, который был запрошен:
|
201 | Created (Создано) | Запрос успешно выполнен и в результате был создан новый ресурс. Этот код обычно присылается в ответ на запрос PUT «ПОМЕСТИТЬ». | |
202 | Accepted (Принято) | Запрос принят, но еще не обработан. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс. | |
203 | Non-Authoritative Information (Информация не авторитетна) | Этот код ответа означает, что информация, которая была возвращена, была предоставлена не сервером, а каким-либо другим источником. Аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника и поэтому может быть неактуальной. | |
204 | No Content (Нет содержимого) | Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные. Клиент может использовать их для обновления кэшированных заголовков для предыдущих ресурсов. | |
205 | Reset Content (Сбросить содержимое) | Этим кодом сервер обязывает клиента сбросить введенные пользователем данные. Тела сообщения сервер при этом не передает и документ обновлять не обязательно. | |
206 | Partial Content (Частичное содержимое) | Сервер удачно выполнил частичный GET-запрос, возвратив только часть контента. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. | |
Перенаправления | |||
300 | Multiple Choice (Множественный выбор) | Этот код ответа присылается, когда запрос имеет более чем один из возможных ответов (по типу MIME, по языку или по другим характеристикам). Сервер передает с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю. | |
301 | Moved Permanently (Перемещен на постоянной основе) | Этот код ответа означает, что URI запрашиваемого ресурса был изменен. Новый URI указывается в поле Location заголовка. | |
302 | Found (Найдено); Moved Temporarily (Перемещен временно) | Этот код ответа означает, что запрошенный ресурс временно доступен по другому URI, указанному в поле Location заголовка. | |
303 | See Other (Смотреть другое) | Сервер отправил этот ответ, чтобы направить клиента для получения запрашиваемого ресурса по другому URI с использованием метода GET . Другой URI указывается в поле Location заголовка. | |
304 | Not Modified (Не изменялось) | Этот ответ используется для кэширования. Он сообщает клиенту, что ответ не был изменен. Таким образом, клиент может продолжать использовать ту же кэшированную версию ответа. При этом сообщение сервера не должно содержать тела. | |
305 | Use Proxy (Используй прокси) | Запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Этот код ответа не поддерживается в основном из соображений безопасности. | |
306 | неиспользуемый | Этот код ответа больше не используется, в настоящее время зарезервирован. | |
307 | Temporary Redirect (Временная переадресация) | Запрашиваемый ресурс на короткое время доступен по другому URI, указанному в поле Location заголовка. Имеет ту же семантику, что и 302 Found код ответа HTTP, за исключением того, что клиент не должен | |
308 | Permanent Redirect (Постоянная переадресация) | Это означает, что ресурс теперь постоянно находится по другому URI, указанному в поле Location заголовка. Имеет ту же семантику, что и код ответа HTTP 301 Moved Permanently , за исключением того, что клиент не должен изменять используемый HTTP-метод: если использовался POST в первом запросе, он должен использовать POST и во втором запросе. | |
Ошибки клиента | |||
400 | Bad Request (Плохой запрос) | Этот ответ означает, что сервер не смог понять клиентский запрос из-за синтаксической ошибки. | |
401 | Unauthorized (Не авторизован) | Для получения запрошенного ответа требуется аутентификация. Это похоже на 403 ответ, но в этом случае возможна аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. | |
402 | Payment Required (Требуется оплата) | Этот код ответа зарезервирован для будущего использования. Первоначальная цель создания этого кода заключалась в использовании его для цифровых платежных систем, однако в настоящее время он не используется. | |
403 | Forbidden (Запрещено) | Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Клиент не имеет прав доступа к контенту, поэтому сервер отказывается дать правильный ответ. Наиболее вероятными причинами ограничения может служить попытка доступа к системным ресурсам веб-сервера (например, файлам.htaccess или.htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов. | |
404 | Not Found (Не найдено) | Сервер не может найти запрашиваемый ресурс. Основная причина - ошибка в написании адреса Web-страницы. Этот код ответа, вероятно, является самым известным из-за его распространенности в Интернете. | |
405 | Method Not Allowed (Метод не поддерживается) | Метод запроса известен серверу, но был отключен и не может быть использован. В ответе сервер должен указать доступные методы в заголовке Allow , разделив их запятой. Два обязательных метода: GET и HEAD никогда не должны быть отключены и не должны возвращать этот код ошибки. | |
406 | Not Acceptable (Недопустимо) | Запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD , то сервер должен вернуть список допустимых характеристик для данного ресурса. | |
407 | Proxy Authentication Required (Требуется аутентификация прокси) | Этот ответ похож на 401 , но здесь проверка подлинности (аутентификация) производится для прокси-сервера. | |
408 | Request Timeout (Истекло время ожидания) | Время ожидания сервером передачи от клиента истекло. Это означает, что сервер хотел бы отключить это неиспользуемое соединение. Обратите внимание, что некоторые серверы просто закрывают соединение без отправки этого сообщения. | |
409 | Conflict (Конфликт) | Этот ответ будет отправлен, когда запрос будет конфликтовать с текущим состоянием сервера. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT . | |
410 | Gone (Удален) | Этот ответ будет отправлен, когда запрашиваемый контент по указанному URL был удален с сервера. Серверу в этом случае неизвестно и местоположение альтернативного документа (например, копии). | |
411 | Length Required (Требуется длина) | Сервер отклонил запрос, потому что поле заголовка Content-Length не определено, а сервер требует его. Такой ответ естественен для запросов типа POST и PUT . Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объем. | |
412 | Precondition Failed (Условие ложно) | Клиент указал условные поля в заголовках запроса (например, If-Match и др.), которые сервер не выполняет. | |
413 | Payload Too Large. Ранее — Request Entity Too Large (Запрошен слишком большой объект) | Объект запроса больше ограничений, которые определены на сервере. Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса или вернуть поле заголовка Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос. | |
414 | URI Too Long. Ранее — Request-URI Too Long (Запрошен слишком большой URI) | Запрошенный клиентом URI слишком длинный для обработки сервером. Такую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET , а не POST . | |
415 | Unsupported Media Type (Неподдерживаемый тип данных) | Формат запрашиваемых типов данных не поддерживается сервером, поэтому сервер отклоняет запрос. По каким-то причинам сервер отказывается работать с указанным типом данных при данном методе. | |
416 | Range Not Satisfiable. Ранее — Requested Range Not Satisfiable (Диапазон недостижим) | Диапазон, указанный полем заголовка Range в запросе, не может быть выполнен; возможно, что диапазон находится вне размера данных целевого URI и отсутствует поле If-Range . | |
417 | Expectation Failed (Ошибка ожидания) | Этот код ответа означает, что ожидание, указанное полем заголовка Expect запроса, не может быть выполнено сервером. | |
421 | Misdirected Request (Неверно адресованный запрос) | Запрос был перенаправлен на сервер, не способный дать ответ. | |
451 | Unavailable For Legal Reasons (Недоступно по юридическим причинам) | Доступ к ресурсу закрыт по юридическим причинам (например, по требованию органов государственной власти или по требованию правообладателя в случае нарушения авторских прав). Введено в черновике IETF за авторством Google, при этом код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту». Был добавлен в стандарт 21 декабря 2015 года. | |
Ошибки сервера | |||
500 | Internal Server Error (Внутренняя ошибка сервера) | Сервер столкнулся с ситуацией, когда он не знает, как ему поступить. Любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса. | |
501 | Not Implemented (Не реализовано) | Метод запроса не поддерживается сервером и не может быть обработан. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Единственными методами, которые требуются сервером для поддержки (и, следовательно, не должны возвращать этот код), являются GET и HEAD . | |
502 | Bad Gateway (Плохой шлюз) | Этот ответ об ошибке означает, что сервер, работая в качестве шлюза для получения ответа, необходимого для обработки запроса, получил неверный ответ. Сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера. | |
503 | Service Unavailable (Сервис недоступен) | Сервер не готов обрабатывать запрос. Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). Обратите внимание, что вместе с этим ответом следует отправить удобную для пользователя страницу, объясняющую проблему. Эти ответы должны использоваться для временных условий, и HTTP-заголовок Retry-After должен, по возможности, содержать расчетное время до восстановления обслуживания. Веб-мастер также должен следить за заголовками, связанными с кэшированием, которые отправляются вместе с этим ответом, так как эти временные ответы обычно не кэшируются. | |
504 | Gateway Timeout (Шлюз не отвечает) | Этот ответ об ошибке предоставляется, когда сервер действует как шлюз и не может получить ответ вовремя. Сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса. | |
505 | HTTP Version Not Supported (Версия HTTP не поддерживается) | Версия протокола HTTP, используемая в запросе, не поддерживается сервером (либо сервер отказывается поддерживать указанную версию). | |
509 | Bandwidth Limit Exceeded (Исчерпана пропускная ширина канала) | Этот код используется при превышении веб-площадкой отведенного ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем «bw/limited», входящим в панель управления хостингом cPanel, где и был введен. |
…
Заголовки отделяются от тела сообщения пустой строкой.
HTTP
-сервер в первой строке заголовка указывает код состояния запроса.
По коду состояния можно судить о результате работы сервера при обработке запроса клиента.
Узнать код ответа сервера на определенный запрос можно с помощью утилиты curl
, вызвав её с ключом -I.
Команду curl можно использовать из командной строки *nix-подобной операционной системы, например, зайдя на сервер по .
Запросим с помощью неё yandex.ru:
curl -I http://yandex.ru
и получим следующий ответ:
HTTP/1.1 301 Moved Permanently Date: Sat, 15 May 2010 05:39:40 GMT Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8 Location: http://www.yandex.ru/ Vary: Accept-Encoding Connection: close Content-Type: text/html; charset=iso-8859-1
Сервер яндекса на запрос yandex.ru ответил кодом «301 Moved Permanently», что, как сказано выше, означает необходимость выполнить запрос по предложенному сервером адресу(этот адрес указан в заголовке «Location», и в данном случае это www.yandex.ru).
Сервер сообщает нам, что обращаться нужно не к yandex.ru, а к www.yandex.ru.
Запросим www.yandex.ru:
curl -I http://www.yandex.ru
получим ответ:
HTTP/1.1 200 OK Server: nginx Date: Sat, 15 May 2010 06:01:26 GMT Content-Type: text/html; charset=UTF-8 Connection: close Cache-Control: no-cache,no-store,max-age=0,must-revalidate Content-Length: 73507 Expires: Sat May 15 06:01:27 2010 GMT Last-Modified: Sat May 15 06:01:27 2010 GMT Set-Cookie: S=; path=/; expires=Wed, 17-May-2000 06:01:26 GMT Set-Cookie: S=; domain=.yandex.ru; path=/; expires=Wed, 17-May-2000 06:01:26 GMT Set-Cookie: yandexuid=3572906971273903287; domain=.yandex.ru; path=/; expires=Tue, 12-May-2020 06:01:26 GMT X-XRDS-Location: http://openid.yandex.ru/server_xrds/
Код ответа «200 OK». Сервер исправно выполнил запрос и вернул пользователю результат.
Класс кодов 4xx предназначен для указания ошибок со стороны клиента.
Запрос не принят сервером из-за наличия синтаксической ошибки. Клиенту следует повторно обратиться к ресурсу с изменённым запросом.
Запрос требует авторизации пользователя. Сервер должен запросить имя и пароль у пользователя. Если были указаны неверные данные, то сервер снова вернёт этот же статус. Например, наша система мониторинга требует предоставления логина и пароля для входа в систему.
При запросе страницы мониторинга сервер отдаёт следующие заголовки:
curl -I http://monitoring.z8.ru
сервер ответит, что не выдаст результат, пока не будут предоставлены логин/пароль:
HTTP/1.1 401 Authorization Required Server: nginx/0.5.7 Date: Sat, 15 May 2010 06:16:23 GMT Content-Type: text/html; charset=iso-8859-1 Transfer-Encoding: chunked Connection: keep-alive WWW-Authenticate: Basic realm="Nagios Access"
Сервер вернул ошибку 403 при попытке просмотра директории доступ к которой был запрещён. Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе со стороны клиента к указанному ресурсу. Если для доступа к ресурсу требуется аутентификация средствами HTTP , то сервер вернёт ответ 401. В противном случае ограничения были заданы администратором сервера или разработчиком web-приложения и могут быть любыми в зависимости от возможностей используемого ПО. Наиболее вероятными причинами ограничения могут являться:
Сервер понял запрос, но не нашёл соответствующего ресурса по указанной ссылке. Запросим несуществующую страницу:
curl -I http://yandex.ru/instr/index.php
И получим ответ 404:
HTTP/1.1 404 Not Found Date: Sat, 15 May 2010 06:56:24 GMT Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8 Accept-Ranges: bytes Vary: Accept-Encoding Connection: close Content-Type: text/html
Указанный клиентом метод запроса нельзя применить к текущему ресурсу.
Данная ошибка означает, что клиент закрыл соединение до того, как ему хоть что-то было передано сервером. Во многих случаях 499 – это нормально. Скажем, клиент закрыл браузер до того, как успела загрузится только что открытая страница (или загрузки картинок с только что открытой страницы). Однако стоит упомянуть, что Яндекс.Метрика, получая код 499, считает, что сервер недоступен.
Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера.
Любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса 5xx. В основном может возникать в случаях:
Сервер в роли шлюза или прокси-сервер получил сообщение о неудачном выполнении промежуточной операции. Обычно проблема возникает, когда HTTP -сервер не доступен из-за технических неполадок, либо клиентским скриптам не хватает памяти/времени для выполнения запроса.
Сервер временно не имеет возможности обрабатывать запросы по техническим причинам. У нас на хостинге эта ошибка говорит о том, что у пользователя превышен лимит на количество обработчиков HTTP -сервера или общего числа процессов на аккаунт.
Введение новых кодов должно производиться только после согласования с IETF . Тем не менее, известно о двух используемых кодах, не упомянутых в RFC: 449 Retry With . Так же упоминается пояснительная фраза «Reply With» в спецификации по WebDAV в Microsoft Developer Network , введённый Microsoft и 509 Bandwidth Limit Exceeded , введённый в cPanel . Компания Google предложила комитету IETF использовать HTTP-код 451 для уведомления о преднамеренном блокировании порталов .
Клиент может не знать все коды состояния, но он обязан отреагировать в соответствии с классом кода. В настоящее время выделено пять классов кодов состояния.
Веб-сервер Internet Information Services в своих файлах журналов кроме стандартных кодов состояния использует подкоды, записывая их через точку после основного. При этом в ответах от сервера данный подкод не размещается - он нужен администратору сервера чтобы тот мог более точно определять источники проблем.
Ниже представлен обзорный список всех описанных в данной статье кодов ответа:
В этот класс выделены коды, информирующие о процессе передачи. При работе через протокол версии 1.0 сообщения с такими кодами должны игнорироваться. В версии 1.1 клиент должен быть готов принять этот класс сообщений как обычный ответ, но серверу отправлять что-либо не нужно. Сами сообщения от сервера содержат только стартовую строку ответа и, если требуется, несколько специфичных для ответа полей заголовка. Прокси-сервера подобные сообщения должны отправлять дальше от сервера к клиенту.
Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения.
Коды этого класса сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило, по другому URI . Из данного класса пять кодов , , , и относятся непосредственно к перенаправлениям. Адрес, по которому клиенту следует произвести запрос, сервер указывает в заголовке Location . При этом допускается использование фрагментов в целевом URI.
По последним стандартам клиент может производить перенаправление без запроса пользователя только если второй ресурс будет запрашиваться методом GET или HEAD . В предыдущих спецификациях говорилось, что для избежания круговых переходов пользователя следует спрашивать после 5-го подряд перенаправления . При всех перенаправлениях, если метод запроса был не HEAD , то в тело ответа следует включить короткое гипертекстовое сообщение с целевым адресом, чтобы в случае ошибки пользователь смог сам произвести переход.
Разработчики HTTP отмечают, что многие клиенты при перенаправлениях с кодами 301 и 302 ошибочно применяют метод GET ко второму ресурсу, несмотря на то, что к первому запрос был с иным методом (чаще всего PUT) . Чтобы избежать недоразумений, в версии HTTP/1.1 были введены коды 303 и 307 и их рекомендовано использовать вместо 302 . Изменять метод нужно только если сервер ответил 303 . В остальных случаях следующий запрос производить с исходным методом.
Поведение клиентов при различных перенаправлениях описано в таблице:
Класс кодов 4xx предназначен для указания ошибок со стороны клиента. При использовании всех методов, кроме HEAD , сервер должен вернуть в теле сообщения гипертекстовое пояснение для пользователя.
Сервер вернул ошибку 403 при попытке просмотра директории «cgi-bin», доступ к которой был запрещён.
Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. Для всех ситуаций, кроме использования метода HEAD , сервер должен включать в тело сообщения объяснение, которое клиент отобразит пользователю.
Основные документы по протоколу HTTP (по убыванию даты публикации):