HTTP-ответы веб-сервера

Каждому веб-мастеру рано или поздно приходится встречаться с такими штуками, как HTTP-ответы веб-сервера. HTTP-ответ – это ответ веб-сервера на запрос посетителя. Он генерируется каждый раз когда браузер обращается к серверу, сервер отправляет специальный HTTP-заголовок (HTTP-ответ), в первой строке которого содержится трехразрядный код состояния (обычно сопровождается еще и текстовым описанием). Для нормальной веб-страницы ( то есть если она существует/не защищена паролем/ее можно прочитать), HTTP-код состояния — 200 OK. Обычный пользователь браузера не видит его, так как сервер переходит к отправке содержимого страницы, а браузер переходит к отображению содержимого страницы.
Коды состояний обычно генерируются веб-серверами, но иногда это могут делать и CGI-сценарии, CGI-сценарии генерируют собственные заголовки вместо тех, которые должен выдавать сервер. Веб-серверы генерируют сообщения об ошибках, когда они сталкиваются с непредвиденными обстоятельствами. Наиболее распространенной ошибкой является 404. Эта ошибка встречается всякий раз, когда пользователь запрашивает несуществующую страницу. В этом случае страница могла быть перемещена, или пользователь мог ошибиться при наборе URL. Каждый запрос на сайт записывается в лог-файлах, проанализировав которые, администратор может узнать много «нового» о своем, казалось бы, безупречном сайте.
Коды ответа четко сгруппированы по нескольким основным разделам:
Информационныe
100 Continue — Продолжить. Как правило это значит, что часть запроса принята и можно отправлять следующую часть.
101 Switching Protocols — Переключение протоколов. Сервер производит переключение протоколов в соответствии с заголовком.
Запрос клиента успешен
200 OK — Запрос успешно обработан.
201 Created — Создан. Данный код используется когда происходит создание нового URI. Вместе с кодом сервер посылает заголовок Location содержащий адрес нового URI.
202 Accepted — Принято. Запрос принят и обрабатывается. В теле ответа также содержится дополнительная информация по обработке.
203 Non-Authoritative Information — Не авторская информация. Ответ означает, что информация получена из ненадежного источника (например, с другого сервера).
204 No Content — Нет содержимого. Запрос обработан, но в ответ ничего не возвращается. Такой ответ возвращается на запрос когда не нужно обновлять содержимое документа.
205 Reset Content — Сбросить содержимое. Означает, что содержимое документа должно быть сброшено в начальное состояние. Обычно используется при очистке форм ввода данных..
206 Partial Content — Частичное содержимое. При данном ответе возвращается лишь часть данных. Обычно используется если клиент запросил часть данных с использованием заголовка Range.
Запрос клиента переадресован, необходимы дальнейшие действия
300 Multiple Choices — Множественный выбор. Означает, что существует несколько вариантов запрашиваемой страницы. Например, сайт, переведенный на несколько языков.
301 Moved Permanently — Перемещен навсегда. Данный ответ означает, что данный документ был перемещен и клиенту следует изменить все ссылки на данный документ.
302 Moved Temporarily — Перемещен временно. Документ временно перемещен в другое место.
303 See Other — Смотреть другой. Данный документ можно найти по другим ссылкам. Список ссылок передается в теле ответа.
304 Not Modified — Не модифицирован. Данный код ответа возвращается если был запрос lf-Modified-Since, и документ не изменялся с указанной даты.
305 Use Proxy — Использовать прокси-сервер. Доступ к документу должен осуществляться через proxy-сервер, адрес которого указан в Location (в теле ответа).
Запрос клиента является неполным
400 Bad Request — Неправильный запрос. Ошибка в строке запроса.
401 Unauthorized — Несанкционированно. Ответ означает, что пользователь не имеет достаточных прав для просмотра документа.
402 Payment Required — Требуется оплата. Данный код зарезервирован на будущее. Видимо будет означать, что запрошенный документ является платным ресурсом.
403 Forbidden — Запрещено. Запрос не будет выполнен по какой-либо причине. Обычно причина указывается в теле ответа.
404 Not Found — Не найдено. Запрашиваемого документа нет на сервере.
405 Method Not Allowed — Метод запрещен. Означает, что метод, используемый клиентом, не поддерживается.
406 Not Acceptable — Не приемлем. Ресурс существует, но не в той форме, что клиент запросил. Например, может различаться язык документа.
407 Proxy Authentication Required — Требуется аутентификация через прокси-сервер.
408 Request Time-out — Истекло время ожидания запроса, т.е. сервер разорвал соединение из-за превышенного таймаута.
409 Conflict — Конфликт. Запрос конфликтует с другим запросом.
410 Gone — Недоступен. Данный код означает, что документ был удален с сервера.
411 Length Required — Требуется длина. Пропущено необходимое поле в заголовке запроса Content-Length.
412 Precondition Failed — Предусловие неверно. Условие указанное в заголовке не выполняется.
413 Request Entity Too Large — Тело запроса слишком большое.
414 Request-URI Too Long — URI запроса слишком длинный
415 Unsupported Media Type — Неподдерживаемый тип медиа, то есть сервер не поддерживает указанный формат данных.
416 — Диапазон запроса неудовлетворителен
417 — Ожидание неуспешно
Ошибки сервера
500 Internal Server Error — Внутреннняя ошибка веб-сервера. Например, ошибка при выполнении скрипта.
501 Not Implemented — Недопустимое действие.
502 Bad Gateway — Недопустимый ответ с другого ресурса.
503 Service Unavailable — Сервис недоступен, скорее всего временно.
504 Gateway Time-out — Превышен таймаут ожидания от другого ресурса
505 HTTP Version not supported — Версия протокола HTTP не поддерживается сервером.
В HTTP в каждом диапазоне определены лишь несколько кодов, хотя сервера при необходимости могут определяться собственные коды. Клиент при получении кода, который он не может распознать, интерпретирует его в соответствии с диапазоном, к которому этот код принадлежит. Коды в диапазонах 100-199, 200-299 и 300-399 большинство Web-браузеров обрабатывают без извещения пользователя, а некоторые коды ошибок из диапазонов 400-499 и 500-599 выводят для пользователя (например, 404 Not Found).