Содержание |
Расшифровка кодов ошибок ответа HTTP-сервера
Форматы ответа сервера
На каждый запрос пользователя сервер отвечает попыткой передачи данных в определенной последовательности и формате. Например, HTTP-ответ (Response) имеет следующий формат:
Статусная строка Заголовки ответа Заголовки данных (может отсутствовать - зависит от типа запроса). Пустая строка Данные (может отсутствовать - зависит от типа запроса).
Статусная строка имеет вид: протокол/версия ---- код ---- статус Статус - текстовая строка, комментирующая код, предназначена для человека; программное обеспечение анализирует только числовое значение кода. Примеры статусных строк: HTTP/1.1 200 OK или HTTP/1.1 304 Not Modified
Код ответа является трехзначным числом. Коды разделены по группам в зависимости от первой цифры:
- 1ХХ - Информационное. Запрос принят, процесс продолжается. Промежуточные информационные сообщения (практически не используется).
- 2ХХ - Успех. Сообщение было успешно принято.
- 3ХХ - Перенаправление. Для завершения запроса необходимо произвести ряд действий. Для получения документа требуются дополнительные действия со стороны клиента.
- 4ХХ - Ошибка клиента. Запрос содержит синтаксическую ошибку и не может быть удовлетворен.
- 5ХХ - Ошибка сервера. Сервер не может выполнить внешний корректный запрос[1].
Все коды ответов HTTP сервера представлены ниже.
Ошибки 1ХХ
- 100 Продолжение
- 101 Переключение протоколов
Ошибки 2ХХ
- 200 Норма - OK - Запрос удовлетворен. Наиболее общий ответ: запрос обработан, запрошенный документ передан клиенту (или только его заголовки - в случае запроса HEAD).
- 201 Принят
- 202 Создан
- 203 Не авторитетная информация
- 204 Не содержит
- 205 Сбросить содержание
- 206 Частично содержит - Partial Content - клиенту передана часть документа в соответствии с заголовком "Range:", имевшимся в запросе.
Ошибки 3ХХ
- 300 Множественный выбор
- 301 Перемещен постоянно - Moved Permanently - запрошенный документ перемещен и ему присвоен новый постоянный URL. Новый URI документа возвращается в заголовке "Location:". В качестве данных возвращается краткий комментарий со ссылкой на новое расположение документа. В последующих запросах этого документа клиенту следует использовать новый URI. Как правило броузеры автоматически генерируют новый запрос с указанным URI при получении кода 301. Сервер конфигурируется для возврата ответов с кодом 301 при реструктуризации его пространства документов - с тем, чтобы клиенты, использующие старые ссылки, перенаправлялись к новому расположению документов, а не получали ошибку 404 Not Found.
- 302 Перемещен временно - Moved Temporarily - Запрашиваемый документ временно находится по новому URL. Новый URI документа возвращается в заголовке "Location:". В качестве данных возвращается краткий комментарий со ссылкой на новое расположение документа. В последующих запросах этого документа клиенту следует использовать старый URI.
- 303 Смотри другой
- 304 Не изменен - Not Modified - документ был запрошен с помощью условного GET-запроса и условие не выполнено (например, документ не был модифицирован с момента, указанного в запросе в заголовке "If-Modified-Since:"). Возвращаются только статусная строка и заголовки ответа, заголовки данных (документа) и сам документ не возвращаются.
- 305 Используй посредника
Ошибки 4ХХ
- 400 Неверный запрос - Bad Request - Запрос содержит синтаксическую ошибку и не может быть принят сервером
- 401 Неизвестен - Unauthorized - Запрос требует аутентификации пользователя, но заголовок "Authorization:" либо отсутствует, либо содержит неприемлемые аутентификационные данные. Заголовок "WWW-Authenticate:" ответа в этом случае должен содержать информацию, необходимую для того, чтобы клиент определил, какая требуется аутентификация. Подробнее о процедуре аутентификации доступа к закрытым ресурсам см. ниже п. "Обработка запроса клиента".
- 402 Необходима оплата
- 403 Запретный - Forbidden Pages - Доступ к этим страницам закрыт. Сервер понял запрос, но намеренно отказался его выполнять. Аутентификация в этом случае не поможет. Причина отказа может быть передана в качестве данных HTTP-ответа. Если сервер не желает раскрывать причину отказа, он может использовать вместо кода 403 код 404.
- 404 Не найден - Not Found - Сервер не нашел ничего, что могло бы соответствовать URI запроса. Сервер не указывает является ли эта ситуация постоянной или временной. Это наиболее общий ответ в случае невозможности передать клиенту запрошенный документ; при этом не делается никаких предположений о том, постоянно или временно ресурс недоступен, а также о причине его недоступности. Удалите из URL все, что стоит за последней косой чертой. Если автор не включил страницу index.html, Вы увидите список страниц.
- 405 Метод не может быть разрешен - Method Not Allowed - в запросе использовался не разрешенный сервером метод (например, DELETE). Список разрешенных методов должен быть помещен в заголовке "Allow:" HTTP-ответа.
- 406 Не доступен - Not Acceptable - в заголовках "Accept..." клиент указал параметры перезентации документа, которые не могут быть выполнены сервером для данного документа (например, нет такой кодировки символов, какая указана в "Accept-Charset:").
- 407 Требуется идентификация прокси, файервола - Proxy Authentication Required - Прокси-сервер (firewall) требует авторизации. Эта ошибка может возникать в случае, если прокси-сервер неисправен.
- 408 Тайм-аут запроса
- 409 Конфликт
- 410 Послан - Gone - аналогично 404 "Not Found", однако подразумевается, что документ существовал ранее, но умышленно удален навсегда (сделан недоступным). Полезно для временных презентаций, более не актуальных, для персональных страниц сотрудников, более не работающих в организации и т.п.
- 411 Необходима длина
- 412 Предварительная ошибка
- 413 Тело запроса слишком велико
- 414 URI запроса слишком велико
- 415 Неподдерживаемый тип медиатипов
- 416 Не применим
Ошибки 5ХХ
- 500 Внутренняя ошибка сервера - Internal Server Error - Сервер столкнулся с непредвиденными обстоятельствами, которые не позволяют ему выполнить запрос. Типичный случай - ошибка в CGI-скрипте.
- 501 Не выполнено - Not Implemented - Сервер не обладает возможностями, необходимыми для реализации запроса. Например, метод, указанный в запросе, не известен серверу.
- 502 Ошибка межсетевого шлюза - Bad Gateway - Сервер получил некорректный ответ от шлюза, к которому он обратился, пытаясь выполнить запрос. Сервер, действующий в качестве прокси-сервера, получил ошибочный (неадекватный) ответ от сервера, которому он перенаправил запрос клиента.
- 503 Служба не доступна - Service Unavailable - сервер временно не в состоянии обработать запрос (перегружен или находится на техобслуживании [maintanance]). Если известно время, через которое сервер вернется в рабочее состояние, оно может быть указано в заголовке "Retry-After:". Заметим, что в случае невозможности обслуживания запросов сервер не обязан выдавать ответ с кодом 503, а может просто отказывать в установлении TCP-соединения. Попытайтесь еще раз, секунд через тридцать.
- 504 Тайм-аут межсетевого шлюза - Gateway Timeout - сервер, действующий в качестве прокси-сервера, не получил за некоторое установленное время ответ от сервера, которому он перенаправил запрос клиента. Этот же код прокси-сервер должен возвращать, если произошел тайм-аут при опросе сервера DNS, однако некоторые существующие прокси-серверы возвращают при этом код 400 или 500. Заголовки, передаваемые вслед за статусной строкой, делятся на собственно заголовки ответа и на заголовки данных, передаваемых в ответе (если такие заголовки требуются). Каждый заголовок начинается с новой строки и состоит из ключевого слова, за которым следует двоеточие, и данных. Порядок следования заголовков не имеет значения.
- 505 Версия HTTP не поддерживается