Расшифровка ошибок Apache

Symbol-ErrorВсе мы видели их не раз и не два: Web-страницы с лаконичным текстом, извещающим, что туда, куда нам нужно, мы попасть не можем, и в нескольких словах объясняющим почему. Самая распространенная страница этого типа содержит гигантскую жирную надпись 404 Not Found (404: ресурс не найден), а под ней — чуть ли не извинения: URL '/abcde.' not found on server (ресурс с URL '/abcde.' на сервере не найден). Не исключено, что страница «404 Not Found» — самая посещаемая в мире.

Все коды состояний определены в разработанных W3C спецификациях HTTP/1.1 на странице 51 и следующих. Определение каждого кода содержит «метод(ы), которым он может следовать, и полный список метаинформации, необходимой для правильной реакции». Перечислю наиболее распространенные коды ошибок.

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

200 OK
Все в порядке. Знаете ли вы о том, что при всяком успешном обращении к Web-странице сервер регистрирует код OK? Вот это он и есть. Код означает, что запрос был успешно обработан, но пользователю соответствующее сообщение никогда не показывают

400 Bad Request
Некорректный запрос. Запрос HTTP не был понят сервером из-за неправильного синтаксиса. Проверьте, не сделали ли вы где-нибудь опечатку, исправьте запрос и попытайтесь послать его снова.

401 Unauthorized
Нет разрешения. Запрос требует идентификации пользователя в соответствии со стандартом WWW, т. е. вам необходимы правильный идентификатор пользователя и пароль. Увидев это сообщение, проверьте в идентификаторе и пароле правописание и регистр (он существен и там, и там), кроме того, попробуйте печатать чуть медленнее. Если же вы пытаетесь пробраться на закрытую страницу, не будучи на ней зарегистрированным, я могу помочь вам, разве что напомнив, что Bob — очень распространенное имя пользователя, а sex — весьма популярный пароль. Все прочее оставляю на усмотрение читателя.

402 Payment Required
Требуется оплата. Сейчас этот код не применяют, в спецификациях он резервируется на будущее.

403 Forbidden
Доступ запрещен. У меня всегда такое чувство, что при этом коде надо бы выводить на экран картинку с черепом и скрещенными костями. Код означает, что сервер понял запрос, но отказывается его выполнить. Пароль тут ни при чем, повторные обращения также ничего не дадут. Обычно это сообщение используется на серверах, сконфигурированных так, чтобы скрывать от пользователя конкретную причину отказа.

404 Not Found
Ресурс не найден. Код, порождающий самую распространенную, самую узнаваемую страницу на свете. Он означает, что сервер не обнаружил ничего такого, что соответствовало бы запросу. Сервер ведет себя довольно любезно — по крайней мере сообщает, что именно он пытался, но не смог найти; например, текст URL '/microsoft.html' not found on server (ресурс с URL '/microsoft.html' на сервере не найден) подскажет вам, в чем дело, если на самом деле вам нужен файл microscope.html. Самая распространенная причина выдачи этого кода — опечатки, в том числе использование неправильного регистра. Вторая по распространенности причина состоит в том, что страницы, которую вы ищете, на сервере больше нет.

500 Internal Server Error
Внутренняя ошибка сервера. Согласно описанию HTTP/1.1, этот код выдается, когда «сервер столкнулся с неожиданными обстоятельствами, препятствующими выполнению запроса». Иначе говоря, вы ни в чем не виноваты и ничего не можете предпринять — разве что связаться с Web-мастером узла.

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

Каждый конкретный трехзначный код входит в некоторый класс; его можно определить по первой цифре.

Коды первого класса (1xx) — чисто информационные. В спецификациях HTTP/1.0 не определен ни один код ошибки из этого класса, так что серверы не посылают ответов с кодом 1xx никаким клиентам HTTP/1.0. Коды класса 1xx:

100 Continue (продолжить)

101 Switching Protocols (переключение протоколов)

Коды второго класса (2xx) соответствуют ситуациям, когда HTTP-запрос клиента успешно получен, понят и принят сервером. Это следующие коды:

200 OK

201 Created (объект создан)

202 Accepted (информация принята)

203 Non-Authoritative Information (не заслуживающая доверия информация)

204 No Content (нет содержания)

205 Reset Content (восстановить исходное содержание)

206 Partial Content (частичное содержание)

Класс 3xx составляют сообщения о перенаправлениях; чтобы выполнить запрос HTTP нужны еще какие-то действия пользовательского агента. Коды этого класса:

300 Multiple Choices (несколько вариантов на выбор)

301 Moved Permanently (ресурс перемещен на постоянной основе)

302 Moved Temporarily (ресурс временно перемещен)

303 See Other (смотрите другой ресурс)

304 Not Modified (не изменился)

305 Use Proxy (используйте прокси-сервер)

В классе 4xx больше всего разных кодов. С помощью этих кодов сервер сообщает об ошибке программы-клиента, т. е. о том, что проблема связана не с ним — сервером, а с вами — путешественником по Web. Вот их полный перечень:

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 Timeout (время обработки запроса истекло)

409 Conflict (конфликт)

410 Gone (ресурса больше нет)

411 Length Required (необходимо указать длину)

412 Precondition Failed (не выполнено предварительное условие)

413 Request Entity Too Large (запрашиваемый элемент слишком велик)

414 Request-URI Too Long (идентификатор ресурса в запросе слишком длинный)

415 Unsupported Media Type (неподдерживаемый тип устройства)

Возможно, серверы не раз выдавали вам коды класса 4xx, но результат выводился в другом формате. Попробуйте, например, задать в браузере адрес http://www..com/whatever.html.

На экране появится специальная страница, используемая на сервере Yahoo! для извещения о том, что запрошенного документа не существует. Сервер пытается оказать вам посильную помощь, предъявив ближайший существующий аналог заданного ему запроса; в данном случае это просто основная страница самого Yahoo! (http://www.yahoo.com/).

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

Коды класса 5xx соответствуют симметричной ситуации — ошибке на сервере — и не имеют никакого отношения к пользователям Web. Однако если вы Web-мастер или отвечаете в своей фирме за подключение к Internet, вы, конечно, должны быть в курсе значений этих кодов и понимать, видят ли их пользователи на экранах своих браузеров. Каждый такой код несет полезную информацию, которая может пригодиться для устранения неисправности:

500 Internal Server Error (внутренняя ошибка сервера)

501 Not Implemented (функция не реализована)

502 Bad Gateway (дефект шлюза)

503 Service Unavailable (служба недоступна)

504 Gateway Timeout (время прохождения через шлюз истекло)

505 HTTP Version Not Supported (неподдерживаемая версия HTTP)

Настройка реакции на ошибку

Как мы видели на примере Yahoo!, можно заставить Web-сервер выдавать более дружелюбные сообщения об ошибках. К сожалению, конкретный способ сделать это для каждого сервера свой. Но при том что детали варьируются, суть остается неизменной. Первым делом вы создаете страницу (или страницы) с информацией, помогающей посетителю вашего узла вновь обрести почву под ногами. Естественное решение состоит в том, что это должен быть URL базовой страницы или поисковой системы узла. Затем необходимо сообщить Web-серверу, в каких случаях такая страница должна использоваться.

В случае серверов Netscape для этого нужно запустить программу администрирования ns-admin, нажать кнопку System Settings (установки системы), выбрать пункт Error Responses (реакция на ошибки), после чего заполнить форму.

Для других Web-серверов необходимую информацию следует искать в их документации.

Новые коды

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

600 Get a Life

Вернитесь в реальный мир. Послушайте, время — три часа ночи. Пора кончать лазанье по Паутине (или, если вы Web-мастер, копание в сервере) и отправляться на боковую.

601 Inappropriate Material

Неподходящий материал. Содержание страницы сомнительно или подпадает под ограничение «детям до шестнадцати». А вам действительно уже есть шестнадцать? Если нет, немедленно отправляйтесь по адресу http://www.pbs.org/rogers/ (популярная Web-страница для детей и их родителей. — Прим. ред.).

602 Really Bad Web

Действительно плохой дизайн. Эта страница отвратительна. Скажите Web-мастеру (или кто у них там пишет на HTML), чтобы прочел практикум по HTML Ричарда Кука в июльском номере NetscapeWorld за 1997 г. (http://www.netscapeworld.com//netscapeworld/nw-07-1997/nw-07-bestpract.html).

603 Random Status Code

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

604 Cat or JPEG Warning

Предупреждение: кошка в формате GIF или JPEG. Эта страница содержит фотографию кошки (кошек) разработчика.

607 Inflated Resume

Раздутое резюме. Легкий уклон в сторону профессиональных достижений вполне объясним, но это уже переходит всякие границы.

608 Unsupported Political Bombast

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

609 Copyright Violation

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

Помоему пост получился исчерповающим=)

Запись навигация

Top