Относительно часто на форуме появляются топики с вопросами типа “Вижу в статистике мудятину 206, что это?” или “Что значит Partial Content в webalizer’e?”. Ввиду повышенного интереса к этой теме, предлагается небольшой FAQ о кодах ошибок сервера. Итак. Успешные запросы клиента. Ответ сервера в диапазоне 200-299 означают, что запрос клиента обработан успешно. 200 OK – все отлично, запрос клиента обработан успешно, ответ сервера содержит затребованные данные. 201 Created (объект создан) – запрос был выполнен и в результате был создан новый ресурс. Новый созданный ресурс может быть вызван по URI (одному или нескольким), возвращенным в объекте ответа; наиболее специфический URL для ресурса отдается в поле заголовка Location. Первоначальный сервер ДОЛЖЕН создать ресурс перед возвратом кода состояния 201. Если действие не может быть выполнено немедленно, сервер должен возвратить ответ с кодом состояния 202 Accepted вместо 201. 202 Accepted (информация принята) – запрос был принят для обработки, но обработка не была завершена.
В конечном счете запрос МОЖЕТ быть, а МОЖЕТ и не быть выполнен, поскольку он МОЖЕТ быть отвергнут при фактической обработке. Не имеется никакой возможности вторичной посылки кода состояния от асинхронной операции типа этой. Ответ с кодом состояния 202 преднамеренно уклончив. Цель его состоит в том, чтобы позволить серверу принять запрос для некоторого другого процесса (возможно пакетно-ориентированного процесса, который выполняется только один раз в день) и не требовать при этом, чтобы соединение агента пользователя с сервером сохранялось до завершения процесса.
Объекту, возвращенному с этим ответом СЛЕДУЕТ содержать индикатор текущего состояния запроса и либо ссылку на монитор состояния, либо некоторую оценку времени, когда пользователь может ожидать завершения выполнения запроса. 203 Non-Authoritative Information (не авторская информация) – возвращенная в заголовке объекта (entity-header) метаинформация – это не оригинал, доступный на первоначальном сервере, а документ, собранный из локальных копий или копий третьей стороны. Представленный документ может быть как подмножеством оригинальной версии, так и содержать сведения, которые в ней не были представлены. Например, включение локальной аннотирующей информацию о ресурсе может расширить метаинформацию, известную первоначальному серверу. Использование этого кода состояния в ответе не является необходимым, но может применяться тогда, когда код состояния ответа отличен от 200 (OK). 204 No Content (нет содержания) – ответ содержит код состояния и заголовок, но тело содержимого отсутствует. При получении этого ответа броузер не должен обновлять свой документ.
Обработчик чувствительных областей изображений может возвращать этот код, когда пользователь от не хуй делать щелкает на бесполезных или пустых участках изображения. 205 Reset Content (очистка ответа) – сервер выполнил запрос, и агенту пользователя следует отменить просмотр документа, который инициировал запрос. Этот ответ предназначен прежде всего для того, чтобы позволить ввод данных, осуществляемый пользователем, с последующей очисткой формы, в которой сделан ввод, так, чтобы пользователь мог легко инициировать следующее действие ввода. Ответ не должен содержать объект. 206 Partial Content (частичное содержимое) – сервер возвращает лишь часть данных затребованного объема. Используется в ответе на запрос с указанием заголовка Range.
Сервер должен указать диапазон, включенный в ответ, в заголовке Content-Range. Вообщем выкачивают ваши порники всякими там флешгетами и прочими менеджерами закачки. Переадресация Код ответа сервера в диапазоне 300-399 означает, что запрос не выполнен и клиенту нужно предпринять некоторые действия для удовлетворения запроса. 300 Multiple Choices (несколько вариантов на выбор) – затребованный URL обозначает более одного ресурса. Например, URL может обозначать документ, переведенный на несколько языков. В теле содержимого, возвращенном сервером, может находиться перечень более конкретных данных о том, как выбрать ресурс правильно. 301 Moved Permanently (ресурс перемещен на постоянной основе) – затребованный URL уже не используется сервером, и указанная в запросе операция не выполнена. Новое местонахождение затребованного документа указывается в заголовке Location.
Во всех последующих запросах данного документа следует указывать новый URL. 302 Moved Temporarily (ресурс временно перемещен) – затребованный URL перемешен, но лишь временно. Заголовок Location указывает на новое местонахождение. Сразу же после получения этого кода состояния клиент должен разрешить запрос при помощи нового URL, но во всех последующих запросах необходимо пользоваться старым URL. 303 See Other (смотрите другой ресурс) – затребованный URL можно найти по другому URL (указанному в заголовке Location). Его следует выбрать методом GET по данному ресурсу.
Этот метод существует прежде всего для того, чтобы производить вывод данных активизированного методом POST сценария, используя перенаправление агента пользователя на указанный ресурс. Новый URI – это не ссылка, заменяющая первоначально запрошенный ресурс. Ответ с кодом состояния 303 не кэшируем, но ответ на второй (переназначенный) запрос может быть кэширован. Если новый URI – это расположение, то ответу следует содержать URL в поле Location. Если метод запроса был не HEAD, то объекту ответа следует содержать короткое гипертекстовое примечание с гиперссылкой на новый (или новые) URI. 304 Not Modified (не изменился) – это код ответа на заголовок lf-Modified-Since, если URL не изменялся с указанной даты. Тело содержимого не посылается, и клиент должен использовать свою локальную копию. 305 Use Proxy (используйте прокси-сервер) – oбращение к запрошенному ресурсу должно производиться через прокси-сервер, указанный в поле Location. В поле Location указан URL прокси-сервера. Ожидается, что получатель повторит запрос через прокси-сервер.
Неполные запросы клиента Коды ответов в диапазоне 400-499 означают, что запрос клиента неполный. Эти коды могут также означать, что от клиента требуется дополнительная информация. 400 – Bad Request (некорректный запрос) – запрос не может быть понят сервером из-за malformed синтаксиса. Клиенту не следует повторять запрос без модификаций. 401 Unauthorized (нет разрешения) – запрос требует установления подлинности пользователя. Ответ должен включать поле заголовка WWW-Authenticate, содержащее вызов (challenge), применимый к запрошенному ресурсу. Клиент может повторить запрос с подходящим полем заголовка Authorization. Если запрос уже включает рекомендации установления подлинности (Authorization credentials) в поле Authorization, то ответ с кодом состояния 401 указывает, что в установлении подлинности этим рекомендациям отказано. Если ответ с кодом состояния 401 содержит тот же самый вызов, что и предшествующий ответ, а агент пользователя уже делал попытку установления подлинности по крайней мере один раз, то следует показать пользователю объект, который был дан в ответе, так как этот объект может включать relevant диагностическую информацию.
402 Payment Required (требуется оплата) – Этот код зарезервирован для будущего использования. В данный момент в HTTP еще не реализован. 403 Forbidden (доступ запрещен) – запрос отклонен по той причине, что сервер не хочет (или не имеет возможности) ответить клиенту. 404 Not Found (ресурс не найден) – документ по указанному URL не существует, сервер не нашел ничего, соответствующего данному запрашиваемому URI (Request-URI). Никак не сообщается является ли такое положение временным или постоянным. Если сервер не желает делать данную информацию доступной клиенту, то вместо этого кода состояния может использоваться код состояния 403 (Запрещено, Forbidden). Код состояния 410 (Удален, Gone) следует использовать, если сервер знает через некоторый внутренне конфигурируемый механизм, что старый ресурс более недоступен, но не знает нового адреса для пересылки. 405 Method Not Allowed (недопустимый метод) – этот код выдается с заголовком Allow и показывает, что метод, используемый клиентом, для данного URL не поддерживается. 406 Not Acceptable (неприемлемый запрос) – ресурс, идентифицируемый запросом, имеет возможности генерации только таких объектов ответа, которые имеют характеристики содержимого (content characteristics), не согласующиеся с заголовками приема (accept headers), представленными в запросе.
407 Proxy Authentication Required (необходима регистрация на сервере-представителе) – этот код подобен коду 401 (Несанкционированно, Unauthorized), но указывает, что клиент должен сначала установить свою подлинность (authenticate) прокси-серверу. Прокси-сервер должен возвратить поле заголовка Proxy-Authenticate, содержащее вызов (challenge), применяемый прокси-сервером для запрошенного ресурса. Клиент может повторить запрос с подходящим полем заголовка Proxy-Authorization. 408 Request Timeout (время обработки запроса истекло) – клиент не произвел запрос в течение времени, которое сервер готов ждать. Клиент может повторить запрос без модификаций позже. 409 Conflict (конфликт) – запрос не был выполнен из-за конфликта с текущим состоянием ресурса. Этот код позволяется только в ситуациях, когда ожидается, что пользователь может решить конфликт и повторно передать запрос. Телу ответа следует содержать достаточное количество информации для пользователя, чтобы он мог распознать источник конфликта.
В идеале, объект ответа должен включать достаточно информации для пользователя или агента пользователя для решения проблемы; однако это может не быть возможно, да и не требуется. Конфликты, наиболее вероятно, будут возникать в ответ на запрос PUT. Если используется версификация, и объект, который должен быть помещен, включает изменения ресурса, которые находятся в противоречии со сделанными раньше каким-либо запросом (третьей стороны), сервер может использовать ответ с кодом состояния 409, чтобы показать, что он не может выполнить запрос. В этом случае, объекту ответа следует содержать список отличий двух версий в формате, определенном полем заголовка ответа Content-Type. 410 Gone (ресурса больше нет) – данный код показывает, что затребованный URL больше не существует и навсегда удален с сервера. 411 Length Required (необходимо указать длину) – сервер отказывается принимать запрос с неопределенным Content-Length.
Клиент может повторить запрос, если добавит допустимое поле заголовка Content-Length, содержащее длину тела сообщения (message-body) в сообщении запроса. 412 Precondition Failed (не выполнено предварительное условие) – сервер отказывается обрабатывать запрос, потому что объект запроса больше, чем сервер желает или способен обработать. Сервер может закрыть соединение, чтобы не дать клиенту возможность продолжить запрос. Если это временное состояние, то серверу СЛЕДУЕТ включить поле заголовка Retry-After для указания времени, через которое клиент может снова повторить запрос.
413 Request Entity Too Large (запрашиваемый элемент слишком велик) – сервер не будет обрабатывать запрос, потому что его тело слишком велико. 414 Request-URI Too Long (идентификатор ресурса в запросе слишком длинный) – сервер не будет обрабатывать запрос, потому что его URL слишком длинный. 415 Unsupported Media Type (неподдерживаемый тип устройства) – сервер отказывается обслуживать запрос, потому что объект запроса находится в формате, не поддерживаемом запрошенным ресурсом для запрошенного метода. Ошибки сервера Коды ответов в диапазоне 500-599 показывают, что сервер столкнулся с ошибкой и, вероятно, не сможет выполнить запрос клиента. 500 Internal Server Error (внутренняя ошибка сервера) – при обработке запроса на сервере один из его компонентов (например, CGI-программа) выдал аварийный отказ или столкнулся с ошибкой конфигурации. 501 Not Implemented (функция не реализована) – клиент запросил выполнение действия, которое сервер выполнить не может, сервер не поддерживает функциональные возможности, требуемые для выполнения запроса. Этот ответ соответствует состоянию, когда сервер не распознает метод запроса и не способен обеспечитиь его для любого ресурса. 502 Bad Gateway (дефект шлюза) – сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от следующего сервера в цепочке запросов, к которому обратился при попытке выполнить запрос. 503 Service Unavailable (служба недоступна) – данный код означает, что данная служба временно недоступна, но в будущем доступ к ней будет восстановлен.
Если сервер знает, когда это произойдет, может быть также выдан заголовок Retry-After. 504 Gateway Timeout (время прохождения через шлюз истекло) – этот ответ похож на 408 (Request Time-out) , за исключением того, что шлюз или уполномоченный сервер превысил лимит времени. 505 HTTP Version Not Supported (неподдерживаемая версия HTTP) – сервер не поддерживает версию протокола HTTP, использованную в запросе. Для составления использовались материалы со все-различных сайтов (rtfm. vn. ua, w3.org и пр.)
Автор: No | другие статьи |