Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
net_tech / Лабораторнаработа 6 (FTP, WWWl).doc
Скачиваний:
33
Добавлен:
10.12.2013
Размер:
125.44 Кб
Скачать

Http-ответ

Ответ (Response) имеет следующий формат:

Статусная строка

Заголовки ответа

Заголовки данных*

Пустая строка

Данные*

Поля, помеченные звездочкой (*), могут отсутствовать - это зависит от типа запроса. Например при запросе методом HEAD возвращаются только статусная строка с кодом 200, заголовки ответа и данных, а сами данные не передаются; а при условном запросе If-Modified-Since, в случае если документ не модифицирован, возвращаются только статусная строка с кодом 304 и заголовок ответа без заголовков данных и самих данных.

Статусная строка имеет вид:

протокол/версия код статус

Статус - текстовая строка, комментирующая код, предназначена для человека; программное обеспечение анализирует только числовое значение кода. Примеры статусных строк:

HTTP/1.1 200 OK

HTTP/1.1 304 Not Modified

Код ответа является трехзначным числом. Коды разделены по группам в зависимости от первой цифры:

1**

Промежуточные информационные сообщения (практически не используются).

2**

Успешная обработка запроса. Примеры:

200

OK - наиболее общий ответ: запрос обработан, запрошенный документ передан клиенту (или только его заголовки - в случае запроса HEAD).

206

Partial Content - клиенту передана часть документа в соответствии с заголовком "Range:", имевшимся в запросе.

3**

Для получения документа требуются дополнительные действия со стороны клиента. Примеры:

301

Moved Permanently - запрошенный документ перемещен. Новый URI документа возвращается в заголовке "Location:". В качестве данных возвращается краткий комментарий со ссылкой на новое расположение документа. В последующих запросах этого документа клиенту следует использовать новый URI. Как правило броузеры автоматически генерируют новый запрос с указанным URI при получении кода 301.

Сервер конфигурируется для возврата ответов с кодом 301 при реструктуризации его пространства документов - с тем, чтобы клиенты, использующие старые ссылки, перенаправлялись к новому расположению документов, а не получали ошибку 404 Not Found.

302

Found - запрошенный документ временно перемещен. Новый URI документа возвращается в заголовке "Location:". В качестве данных возвращается краткий комментарий со ссылкой на новое расположение документа. В последующих запросах этого документа клиенту следует использовать старый URI.

304

Not Modified - документ был запрошен с помощью условного GET-запроса и условие не выполнено (например, документ не был модифицирован с момента, указанного в запросе в заголовке "If-Modified-Since:"). Возвращаются только статусная строка и заголовки ответа, заголовки данных (документа) и сам документ не возвращаются.

4**

Ошибка клиента. Примеры:

400

Bad Request - ошибка в формате запроса.

401

Unauthorized - для доступа к ресурсу требуется аутентификация, но заголовок "Authorization:" либо отсутствует, либо содержит неприемлемые аутентификационные данные. Заголовок "WWW-Authenticate:" ответа в этом случае должен содержать информацию, необходимую для того, чтобы клиент определил, какая требуется аутентификация. Подробнее о процедуре аутентификации доступа к закрытым ресурсам см. ниже п. "Обработка запроса клиента".

403

Forbidden - север понял запрос, но намеренно отказался его выполнять. Аутентификация в этом случае не поможет. Причина отказа может быть передана в качестве данных HTTP-ответа. Если сервер не желает раскрывать причину отказа, он может использовать вместо кода 403 код 404.

404

Not Found - запрошенный ресурс не найден. Это наиболее общий ответ в случае невозможности передать клиенту запрошенный документ; при этом не делается никаких предположений о том, постоянно или временно ресурс недоступен, а также о причине его недоступности.

405

Method Not Allowed - в запросе использовался не разрешенный сервером метод (например, DELETE). Список разрешенных методов должен быть помещен в заголовке "Allow:" HTTP-ответа.

406

Not Acceptable - в заголовках "Accept..." клиент указал параметры перезентации документа, которые не могут быть выполнены сервером для данного документа (например, нет такой кодировки символов, какая указана в "Accept-Charset:").

410

Gone - аналогично 404 "Not Found", однако подразумевается, что документ существовал ранее, но умышленно удален навсегда (сделан недоступным). Полезно для временных презентаций, более не актуальных, для персональных страниц сотрудников, более не работающих в организации и т.п.

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.

Заголовки, передаваемые вслед за статусной строкой, делятся на собственно заголовки ответа и на заголовки данных, передаваемых в ответе (если такие заголовки требуются). Каждый заголовок начинается с новой строки и состоит из ключевого слова, за которым следует двоеточие, и данных. Порядок следования заголовков не имеет значения.

Ниже приведены примеры заголовков ответа (за полным списком и описаниями обращаться к RFC-2616). Заголовки данных рассмотрены ниже в отдельном пункте.

Server: Apache/1.3.6 (Unix) rus/PL28.16

Тип WWW-сервера, его версия, дополнительные модули и подобная информация.

Date: Mon, 13 Mar 2000 07:38:48 GMT

Время ответа.

Accept-Ranges: bytes

Сервер может выдавать документ по частям (по байтам).

WWW-Authenticate: Basic realm="SysAdmin"

Этот заголовок возвращается с ответом 401 Authorization Required, в котором указана схема аутентификации и ее контекст ("System Administration"). Последнее - комментарий для пользователя, который броузер показывает в окне запроса имени и пароля.

Location: http://new.url.com/

Новый URL документа, возвращенный вместе с ответом типа 301 Moved Permanently, 302 Found.

Connection: close

См. заголовок Connection в заголовках HTTP-запроса выше.

Allow: GET, HEAD, POST

Перечисляются HTTP-методы, поддерживаемые сервером. Отправляется в ответ на запрос, содержавший недопустимый метод. Ответ сервера имеет кодом 501 Not Implemented).