- •Лабораторная работа № 3 Тема: Клиент - серверное взаимодействие в рамках протокола http
- •1. Цель работы
- •2. Порядок выполнения работы
- •3. Теоретические сведения
- •3.1. Общая характеристика протокола http
- •3.2. Структура запросов клиента
- •3.2.1. Строка запроса
- •3.2.2. Раздел заголовков http - запроса
- •3.2.3. Тело http - запроса
- •3.2.4. Примеры http-запросов
- •3.3. Структура ответов сервера
- •3.3.1. Строка состояния
- •3.3.2. Блок заголовков http-ответа
- •3.3.3. Тело http-ответа
3.3.2. Блок заголовков http-ответа
Информация заголовка: содержит данные о самом сервере и затребованном ресурсе. Завершает заголовок пустая строка.
Синтаксис строки блока заголовков такой же как в HTTP-запросах:
Имя заголовка: значение
Перечень возможных заголовков в ответе сервера достаточно широк. Приведем некоторые из них.
Date. Указывает на время создания ответного сообщения на полученный запрос.
Форматы (допускаемые) задания даты и времени:
Date: Sat, 01 Jan 1999 00:01:01 GMT - рекомендуемый формат
Date: Sat Jan 1 00:01:01 1999 - (формат ANSI)
Date: Saturday, 01-Jan-99 00:01:01 GMT
Server. Указывает имя и версию сервера, сведения о программном обеспечении, используемом сервером для обслуживания запроса.
Пример:
Server: Аpache/1.1.1 ioweb/1.22 Cern/3.0 lib www/2.17
Server: NCSA/1.0
Last-Modified. Определяет дату и время последующего изменения файла. Формат указания даты и времени такой же как в заголовке Date.
Last-Modified: Sat Oct 14 00:01:01 2006
Content-Type. Определяет media-тип подтип для тела содержимого. Задается тип в формате тип/подтип, например text/html. Существует большее количество типов сред передачи и методов описания содержимого. По мере появления новых типов они зарегистрированы комитетом присвоения номеров Internet, поэтому использование не зарегистрированного типа может привести к непредсказуемым результатам. Сервер должен вернуть media-типы соответствующие предпочтительным форматами клиента.
Пример:
Content-Type: text/html
Content-Type: text/plain
Content-Length. Задает объем данных (в байтах) в переданном теле содержимого. Для запросов, имеющих динамический характер, размер содержимого точно указать нельзя. В этом случае этот заголовок опускается.
Allow. Перечисляет (через ",") разрешенные методы доступа к ресурсу.
Пример:
Allow: GET, HEAD
Если указанный в запросе метод не применим к ресурсу в ответе сервера указывается код 405 (Method not allowed (использование метода запрещено))
Content-Encoding. Определяет тип кодирования передаваемого ресурса. Возможные значения: gzip, compress.
Пример:
Content-Encoding: хgzip
- указывает, что ресурс является заархивированным файлом в формате zip.
Допускается задание нескольких схем кодирования, разделенных запятой и расположенных в том порядке, в котором применялись к исходным данным.
Expires. Задает дату и время, после которого ресурс считается устаревшим. После указанной даты документ можно изменять, а также удалять. Дата и время задаются так же как в заголовке Date.
Пример:
Expires: Mon Oct 16 10:04:01 2006
3.3.3. Тело http-ответа
Наличие тела в HTTP-ответе зависит от метода, который был использован в запросе, и Статус-Кода. Все ответы на запросы HEAD не должны содержать тело сообщения, хотя наличие некоторых полей заголовка сообщения может указывать на возможное присутствие такового. Соответственно, ответы "204 No Content", "304 Not Modified", и "406 None Acceptable" также не должны включать в себя тело HTTP-ответа.
Тело ресурса отделяется пустой строкой от блока заголовков и подразумевает ресурс, к которому был сгенерирован запрос. (текстовый файл, видеоклип, архив из сжатых файлов, выполняемая программа и т.д.) Тело ресурса пересылается вместе с HTTP-ответом, если этого требует метод запроса и в этом случае в ответном запросе обязательно должно быть включено поле Content-Length.
