Формат ответа HTTP напоминает формат запроса:
<строка-состояния>
<заголовки>
<пустая строка>
[<тело-ответа>]
Как видите, единственное реальное отличие заключается в том, что
первая строка ответа содержит информацию о состоянии, а не о запросе.
Строка состояния говорит о ресурсе, предоставившем код состояния.
1 Ниже приводится типичный ответ HTTP:
НТТР/1.1 200 0К -
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=IS0-8859-1
Content-Length: 122
Wrox Homepage
< ! - - здесь размещается тело ответа - - >
В данном примере строка состояния содержит код состояния HTTP и сообщение ОК. Строка состояния всегда содержит код состояния и с ответствующее ему короткое сообщение, во избежание каких-либо недоразумений. Вот коды состояния, которые встречаются чаще всего:
• 200 (ОК): ресурс был найден, все в порядке.
• 304 (NOT MODIFIED): со времени последнего запроса ресурс не и менялся. Чаще всего этот код используется механизмом кэширония в броузерах.
• 401 (UNAUTHORIZED): клиент не был авторизован и не имеет прва доступа к ресурсу. Часто при получении такого кода состояния броузер запрашивает имя и пароль пользователя, необходимые для входа на сервер.
• 403 (FORBIDDEN): клиент не прошел процедуру авторизации. Этот код состояния обычно приходит в ответ на неудачную попытку зарегистрироваться на сервере после получения кода состояния 401.
• 404 (NOT FOUND): запрошенный ресурс по заданному адресу найден.
За строкой состояния следуют заголовки. Как правило, сервер всегда возвращает заголовок Date, в нем указываются дата и время генерации ответа. (Обычно серверы возвращают некоторую информацию о себе хотя это совсем не обязательно.) Следующие два заголовка уже знакомы мы вам, т. к. те же самые заголовки Content-Type и Content-Length фигурируют в запросах типа POST. В данном примере заголовок Content-Туре определяет тип MIME - HTML(text/html),содержащий символы в кодировке ISO-8859-1 (стандарт для англоязычных ресурсов в Соединенных Штатах).Тело ответа содержит код HTML запрошенного ресурса
(хотя оно может с таким же успехом содержать обычный текст или двоичные данные). Эти данные отображаются пользователю.
Обратите внимание, что здесь нет никакой информации о типе запроса,для которого сервер вернул этот ответ, т. к. для сервера это не имеет никакого значения. Клиент сам решает, какой тип запроса использовать для отправки тех или иных данных и что делать с возвращаемой информацией.