назад | содержание | вперед

6 Ответ (Response).

После получения и интерпретации сообщения запроса, сервер отвечает сообщением HTTP ответа.

       Response      = Status-Line               ; Раздел 6.1
                       *( general-header         ; Раздел 4.5
                        | response-header        ; Раздел 6.2
                        | entity-header )        ; Раздел 7.1
                       CRLF
                       [ message-body ]          ; Раздел 7.2

6.1 Строка состояния (Status-Line).

Первая строка ответа - это строка состояния (Status-Line). Она состоит из версии протокола (HTTP-Version), числового кода состояния (Status-Code) и поясняющей фразы (Reason-Phrase), разделенных символами SP. CR и LF не допустимы в Status-Line, за исключением конечной последовательности CRLF.

       Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

6.1.1 Код состояния и поясняющая фраза.

Элемент код состояния (Status-Code) - это целочисленный трехразрядный код результата понимания и удовлетворения запроса. Эти коды полностью определены в разделе 10. Поясняющая фраза (Reason-Phrase) предназначена для короткого текстового описания кода состояния. Код состояния (Status-Code) предназначен для использования автоматами, а поясняющая фраза предназначена для живых пользователей. От клиента не требуется исследовать или отображать поясняющую фразу (Reason-Phrase).

Первая цифра кода состояния определяет класс ответа. Последние две цифры не имеют определенной роли в классификации. Имеется 5 значений первой цифры:

  1. 1xx: Информационные коды - запрос получен, продолжается обработка.
  2. 2xx: Успешные коды - действие было успешно получено, понято и обработано.
  3. 3xx: Коды перенаправления - для выполнения запроса должны быть предприняты дальнейшие действия.
  4. 4xx: Коды ошибок клиента - запрос имеет плохой синтаксис или не может быть выполнен.
  5. 5xx: Коды ошибок сервера - сервер не в состоянии выполнить допустимый запрос.

Конкретные значения числовых кодов состояния, определенных в HTTP/1.1, и примерный набор соответствующих поясняющих фраз (Reason-Phrase) приводятся ниже. Поясняющие фразы (Reason-Phrase), перечисленные здесь являются рекомендуемыми, но могут быть заменены на эквивалентные без воздействия на протокол.

          Status-Code    = "100"   ; Продолжать, Continue
                         | "101"   ; Переключение протоколов, Switching Protocols
                         | "200"   ; OK
                         | "201"   ; Создан, Created
                         | "202"   ; Принято, Accepted
                         | "203"   ; Не авторская информация, Non-Authoritative Information
                         | "204"   ; Нет содержимого, No Content
                         | "205"   ; Сбросить содержимое, Reset Content
                         | "206"   ; Частичное содержимое, Partial Content
                         | "300"   ; Множественный выбор, Multiple Choices
                         | "301"   ; Постоянно перенесен, Moved Permanently
                         | "302"   ; Временно перемещен, Moved Temporarily
                         | "303"   ; Смотреть другой, See Other
                         | "304"   ; Не модифицирован, Not Modified
                         | "305"   ; Используйте прокси-сервер, Use Proxy
                         | "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"   ; URI запроса слишком длинный, Request-URI Too Long
                         | "415"   ; Неподдерживаемый медиа тип, Unsupported Media Type
                         | "500"   ; Внутренняя ошибка сервера, Internal Server Error
                         | "501"   ; Не реализовано, Not Implemented
                         | "502"   ; Ошибка шлюза, Bad Gateway
                         | "503"   ; Сервис недоступен, Service Unavailable
                         | "504"   ; Истекло время ожидания от шлюза, Gateway Timeout
                         | "505"   ; Не поддерживаемая версия HTTP, HTTP Version Not
                                   ; Supported
                         | extension-code

          extension-code = 3DIGIT

          Reason-Phrase  = *<TEXT не включающий CR, LF>

Коды состояния HTTP расширяемы. HTTP приложениям не требуется понимать значение всех зарегистрированных кодов состояния, хотя такое понимание очень желательно. Однако, приложения ДОЛЖНЫ понимать класс любого кода состояния, который обозначается первой цифрой, и обрабатывать любой нераспознанный ответ как эквивалентный коду состояния x00 этого класса, за исключением тех случаев, когда нераспознанный ответ НЕ ДОЛЖЕН кэшироваться. Например, если клиентом получен и не был распознан код состояния 431, то он может безопасно считать, что в запросе что-то было неправильно и обрабатывать ответ, как если бы был получен код состояния 400. В таких случаях агентам пользователя СЛЕДУЕТ представить пользователю объект, возвращенный в ответе, так как этот объект, вероятно, включает читабельную для человека информацию, которая поясняет необычное состояние.

6.2 Поля заголовка ответа.

Поля заголовка ответа (response-header fields) позволяют серверу передавать дополнительную информацию, касающуюся ответа, которая не может быть помещена в строку состояния Status-Line. Эти поля заголовка дают информацию о сервере и о дальнейшем доступе к ресурсу, указанному этим Request-URI.

          response-header = Age                     ; Раздел 14.6
                          | Location                ; Раздел 14.30
                          | Proxy-Authenticate      ; Раздел 14.33
                          | Public                  ; Раздел 14.35
                          | Retry-After             ; Раздел 14.38
                          | Server                  ; Раздел 14.39
                          | Vary                    ; Раздел 14.43
                          | Warning                 ; Раздел 14.45
                          | WWW-Authenticate        ; Раздел 14.46

Имена полей заголовка ответа (Response-header) могут быть надежно расширены только в сочетании с изменением версии протокола. Однако, новые или экспериментальные поля заголовка могут получить семантику полей заголовка ответа (Response-header), если все стороны соединения распознают их как поля заголовка ответа (Response-header). Нераспознанные поля заголовка обрабатываются как поля заголовка объекта (entity-header).

Множество имен полей заголовка ответа (Response-header) может быть надежно расширено только в комбинации с изменением версии протокола. Однако, новые или экспериментальные поля заголовка с семантикой полей заголовка ответа МОГУТ быть добавлены если все участники соединения распознают их как поля заголовка ответа. Нераспознанные поля заголовка обрабатываются как поля заголовка объекта.


Copyright  ©  1998 Alex Simonoff (http://www.omsk.com/Leshik/), All Rights Reserved.


назад | содержание | вперед