2014/04/09 11:05:27

Ошибки передачи данных

При запросе документов нередко происходят ошибки передачи данных. Что из них можно узнать? По коду полученного ответа сервера можно понять, на чьей стороне она возникла и ее причины.

Содержание

Расшифровка кодов ошибок ответа 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 не поддерживается

Примечания