Старые и новые коды ответов

Смысл 16 кодов состояния ответов из НТТР/1.0 (об этом шла речь в главе 6, разДел 6.2.4) остается неизменным в НТТР/1.1. Всего в НТТР/1.1 существует 41 код ответа, как показано в таблице 7.6.

Таблица 7.6. Коды состояний ответов НТТР/1.1. С помощью ‘*’ помечены коды ответов НТТР/1.0.

В НТТР/1.1 в каждом классе зарезервировано несколько новых кодов состояния. Мы рассмотрим некоторые из самых важных новых кодов состояния и объясним, для чего их потребовалось ввести в НТТР/1.1. Вместе с тем, не было определено пи одного нового класса кодов состояния — новые классы не воспринимались бы клиентами и прокси-серверами, работающими по протоколу НТТР/1.0. Клиенты, работающие по протоколу НТТР/0.9, не воспринимают коды ответов, поскольку они получают только тело содержимого.

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

Трудно равномерно распределить коды ответов по копкретным семантическим категориям. НТТР/1.0 не дает особых указаний, какой код ответа следует вернуть для данной ситуации. В основном этого не делает и НТТР/1.1. Таким образом, хотя и существует некоторая свобода в том, какой код в пределах конкретного класса следует вернуть, не может быть сомиеиий относительно класса кода ответов, подходящего в данной ситуации. Например, коды ответов 200 OK, 201 Created или 204 No Content могут быть переданы в ответ на запрос PUT. Подобным же образом сервер, который не хочет, чтобы клиент имел возможность различать ситуации, когда ресурса не существует и когда у данного клиента пет прав доступа к пему, может использовать вместо ответа 403 Forbidden ответ 404 Not Found. Если известиа информация об особенностях функционирования агента пользователя, сервер может посылать разпые коды ответов. Например, некоторые агенты пользователя, созданные до появления НТТР/1.1, не воспринимают ответ 303 See Other, по при получении ответа 302 Found, они реагируют точно так же, как должны были бы в соответствии со спецификацией реагировать на ответ 303 See Other. Эту информацию можно иснользовать и передавать такому агенту пользователя ответ 302 Found вместо ответа 303 See Other.

КЛАСС (lXX) КОДОВ ОТВЕТОВ НТТР/1.1. ИНФОРМАЦИОННЫЕ СООБЩЕНИЯ

В НТТР/1.0 (RFC 1945), не определено никаких кодов информационного класса (lxx), тогда как n НТТР/1.1, как показано в таблице 7.7, зарезервировано два новых кода ответов этого класса. В НТТР/1.0 была правильно предугадана необходимость этого класса ответов. Фактически документ RFC 1945 даже включал ограничения на ответы класса (lxx) (ответы не могли иметь тел), хотя сами коды состояния класса (lxx) в то время отсутствовали.

Таблица 7.7. Класс (lxx) кодов состояния ответов (информационные сообщения)

Код состояния и строка сообщения

Краткое описание

Раздел

100     Continue

101      Switching Protocols

Передача запроса разрешена Переключение на другой протокол

7.4.2 7.7

КЛАСС (2XX) КОДОВ ОТВЕТОВ НТТР/1.1. УСПЕШНОЕ ЗАВЕРШЕНИЕ

Класс 2xx объединяет семь кодов ответов, четыре из которых перешли из НТТР/1.0. В таблице 7.8 приведены старые и новые коды, а также разделы, в которых обсуждается пазпачепие новых кодов ответов.

Таблица 7.8. Класс (2xx) кодов состояний ответов (успешное завершение). ‘*’ обозначены коды ответов НТТР/1.0.

КЛАСС (3XX) КОДОВ ОТВЕТОВ HTTP/i.i. ПЕРЕАДРЕСАЦИЯ

Коды ответов класса Зхх используются для определения альтернативных действий, которые могут быть предприняты агентом пользователя для выполнения данного запроса. Старый код состояния ответов, связанный с переадресацией в НТТР/1.0, 300 Multiple Choices имеет в НТТР/1.1 несколько иное значение. Значение другого кода состояния НТТР/1.0, 302 Found, было также изменено. Кроме того, в НТТР/1.1 добавлены четыре новых кода состояния, относящихся к переадресации. В таблице 7.9 показаны все коды ответов класса Зхх и указапы разделы, в которых обсуждаются изменения.

Таблица 7.9. Класс (Зхх) кодов состояний ответов (переадресация). С помощью ‘*’ помечены коды ответов НТТР/1.0

Хотя Агент пользователя может не отображать строку описания (фраза на естественном языке, поясняющая код состояния), ассоциированную с ответом, эти строки являются хорошим способом дать описание конкретных кодов ответов. Строка сообщения для кода состояния 302 была изменена при переходе от НТТР/1.0 к НТТР/1.1. Исходная строка сообщения в первых дискуссиях и реализациях была Found, по в RFC 1945 эта строка была из-за небрежности заменена на Moved Temporarily. Новый вариант этой строки сообщения в НТТР/1.1 — Found.

КЛАСС (4XX) КОДОВ ОТВЕТОВ НТТР/1.1. ОШИБКИ НА СТОРОНЕ КЛИЕНТА

В НТТР/1.1 появилось 14 новых кодов ответов, относящихся к классу ошибок на стороне клиента. Новые коды отражают значительно расширенный диапазон откликов, паиравляемых клиентам, если предполагается, что они совершили ошибку в дапном запросе. Изменения подразделяются на пять обширных категорий, как показано в таблице 7.10. Первая категория включает четыре кода ответов НТТР/1.0. Добавились четыре новые категории:

•          Коды уточнения состояния. Данпые четыре кода ответов уточняют некоторые из старых кодов ответов, имевшихся в НТТР/1.0. Изменения относительно невелики, а новые коды ответов были созданы для обработки отдельных ситуаций.

•          Коды согласования. Так как некоторые Web-ресурсы достунпы в нескольких вариантах (язык, набор символов и т.д.), в НТТР/1.0 был введеп механизм согласования содержания, посредством которого клиент может проинформировать сервер о языках и/или наборах символов, приемлемых для данного пользователя. Ключевое изменение в НТТР/1.1 — это расширение возможностей согласования между источником и получателем: процесс согласования может осуществляться как агентами пользователя, так и серверами.

•          Коды, связанные с размером. В этой категории два кода. Понятие размера возникает в двух контекстах: размер содержания сообщения и размер URI запроса. Серверы могут требовать принятия некоторых мер, основанных на отсутствии или присутствии информации о размере.

•          Коды состояний, связанные с новыми требованиями. Этот класс состоит из четырех кодов ответов, представляющих результат существенного расширения возможностей в НТТР/1.1. Они отличаются от предыдущих двух категорий, в которых НТТР/1.0 не предлагал никаких возможностей, требующих этих кодов.

Таблица 7.i0. Класс кодов ответов (4xx). Ошибки на стороне клиента. С помощью ‘*’ помечены коды ответов НТТР/1.0

Классификация

Код состояния и строка сообщения___________

Раздел

Новые коды для других

402 Payment Required

7.12.3

возможностей НТТР/1.1

409 Conflict

7.12.3

 

412 Precondition Failed

7.3.3

 

416 Requested Range Not Satisfiable

7.4.1

 

417 Expectation Failed

7.4.2________

КЛАСС (5XX) КОДОВ ОТВЕТОВ НТТР/1.1. ОШИБКИ HA СТОРОНЕ СЕРВЕРА

Коды ответов класса 5xx возвращаются в том случае, когда серверу не удается обработать данный запрос или он обнаруживает ошибку. В НТТР/1.0 было четыре кода ответов класса 5xx, тогда как в НТТР/1.1 их стало шесть. Коды ответов класса 5xx приведены в таблице 7.11.

Таблица 7.11. Класс (5xx) кодов ответов. Ошибки на стороне сервера. С помощью ‘*’ помечены коды ответов НТТР/1.0.

Код состояния и строка сообщения

Краткое описание

Раздел

500 Internal Server Error*

Непредвиденное состояние сервера

6.2.4

501 Not Implemented*

Отсутствие функции

6.2.4

502 Bad Gateway*

Ошибка расположенного на пути

6.2.4

 

сообщения сервера

 

503 Servicc Unavailable*

Временно невозможно обработать запрос

6.2.4

504 Gateway Timcout

Расположенный на пути сообщсния

7.3.3

 

сервер превысил лимит времени на ответ

7.12.3

505 HTTP Version Not Supported

Версия протокола не поддерживается

 

В НТТР/1.1 было определено использование заголовка Retry-After с ответом 503 Service Unavailable в НТТР/1.0. Было введено два новых кода состояния: 504 Gateway Timeout и 505 HTTP Version Not Supported.

В последующих разделах подробно рассматриваются различные семантические изменения с учетом приведенного выше обзора изменений методов, заголовков и кодов ответов в НТТР/1.1.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100