Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры.docx
Скачиваний:
105
Добавлен:
11.05.2015
Размер:
1.13 Mб
Скачать

4.Протокол http. Методы запросов. Спецификация mime

Запрос клиента

Строка состояния имеет следующий формат:

<метод запроса><URL ресурса><версия протокола HTTP>

Метод запроса определяет вид воздействия на ресурс, указанный с помощью URL. Наиболее часто используются два метода: GET и POST.

Версия протокола обычно задается в следующем формате:

HTTP/<версия>

 Пример:

GET /net/index.html HTTP/1.0

 

Поля заголовка используются для передачи серверу дополнительной информации. Каждое поле заголовка имеет следующий формат:

<имя поля>:<значение>

Заголовки запроса клиента

Host – доменное имя или IP-адрес сервера, к которому обращается клиент;

From –адрес электронной почты пользователя;

Accept – MIME-типы данных, обрабатываемые клиентом.;

AcceptLanguage - идентификаторы, с помощью которых сообщаются языки, поддерживаемые клиентом. Разделяются запятыми;

AcceptCharset – идентификаторы, сообщающие серверу о поддерживаемых клиентом кодировках. Разделяются запятыми;

ContentType – MIME-тип данных, содержащихся в теле запроса;

ContentLength – число символов, содержащихся в теле запроса;

Connection – управляет TCP-соединением. Если в этом поле задано значение Close, то после обработки запроса соединение разрывается. Если задано значение Keep – Alive, то соединение сохраняется и может быть использовано для следующих запросов;

UserAgent – информация о клиенте.

Ответ сервера

Строка состояния имеет следующий формат:

<версия протокола> <код ответа> <пояснения>

Версия протокола задается в том формате, что и в запросе клиента;

Код ответа представляет собой трехзначное десятичное число, обозначающее результат обработки запроса клиента сервером;

Пояснения представляют собой расшифровку кода ответа в символьном виде. Это просто строка символов, не обрабатываемая клиентом и предназначенная для системного администратора.

Пример:

HTTP/1.0 200 OK

Поля заголовка в ответе сервера имеют такую же структуру, что и в запросе клиента.

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

Server - наименование и номер версии Web-сервера;

Allow – список методов, доступных для данного сервера;

ContentLanguage – перечень языков, которые должен поддерживать клиент для корректного отображения передаваемого ресурса;

ContentType – MIME-тип данных, содержащихся в теле ответа сервера;

ContentLength – размер данных, содержащихся в теле ответа сервера;

LastModified – дата и время последнего изменения затребованного ресурса;

Date – дата и время создания ответа сервера;

Expires – дата и время, определяющие момент, когда информация, переданная клиенту, считается устаревшей;

Location – адрес реального расположении ресурса. Используется для переадресаии запроса;

CacheControl – директивы управления кешированием

В теле ответа содержится код передаваемого клиенту ресурса. Это может быть HTML-документ или любой другой ресурс. Способ обработки ресурса указывается в поле заголовка Content-type.

Спецификация MIME

Протоколы приложений могут обмениваться только текстовой информацией. Для обеспечения возможности передачи двоичных файлов по протоколу HTTP используется спецификация MIME (Multipurpose Internet Mail Extension). Согласно спецификации MIME, формат данных описывается следующим образом:

enctype=<тип>/<подтип>

Атрибут enctype определяет тип кодирования данных в теле сообщения и разбиение сообщения на части.

Тип определяет, какого рода информация содержится в двоичном файле (текст, приложение, изображение, видеозапись и т.п.), а подтип – формат файла.

Пример:

text/plain

где text – указывает на наличие текстового содержимого, а plain –уточняет его как простой текст.

Методы.

Метод GET

Используется для запроса содержимого указанного ресурса.

Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»:

GET /path/resource?param1=value1&param2=value2 HTTP/1.1

Метод GET применяется клиентом при запросе к серверу по умолчанию. В этом случае клиент сообщает

    • адрес ресурса (URL), который он хочет получить,

    • версию протокола HTTP,

    • поддерживаемые им MIME-типы документов,

    • версию и название клиентского программного обеспечения.

Все эти параметры указываются в заголовке HTTP-запроса. Тело в запросе не передается.

В ответ сервер сообщает:

  • версию HTTP-протокола,

  • код возврата,

  • тип содержания тела сообщения,

  • размер тела сообщения и

  • ряд других необязательных директив HTTP-заголовка.

Сам ресурс, обычно HTML-страница, передается в теле отклика.

Метод POST

Применяется для передачи пользовательских данных заданному ресурсу.

При обмене данными по методу POST в запросе клиента присутствует тело HTTP-сообщения. Это тело может формироваться из данных, которые вводятся в HTML-форме, или из присоединенного внешнего файла.

В отклике, как правило, присутствует и заголовок, и тело HTTP-сообщения.

Чтобы инициировать обмен по методу POST, в атрибуте METHOD контейнера FORM следует указать значение "POST".

Применяется для передачи пользовательских данных заданному ресурсу. В отличие от метода GET, метод POST не считается идемпотентным, то есть многократное повторение одних и тех же запросов POST может возвращать разные результаты (например, после каждой отправки комментария будет появляться одна копия этого комментария).

При результатах выполнения 200 (Ok) и 204 (No Content) в тело ответа следует включить сообщение об итоге выполнения запроса. Если был создан ресурс, то серверу следует вернуть ответ 201 (Created) с указанием URI нового ресурса в заголовке Location.

Сообщение ответа сервера на выполнение метода POST не кэшируется.

Метод OPTIONS

Используется для определения возможностей веб-сервера или параметров соединения для конкретного ресурса. В ответ серверу следует включить заголовок Allow со списком поддерживаемых методов. Также в заголовки ответа может включаться информация о поддерживаемых расширениях.

Предполагается, что запрос клиента может содержать тело сообщения для указания интересующих его сведений. Формат тела и порядок работы с ним в настоящий момент не определён. Сервер пока должен его игнорировать. Аналогичная ситуация и с телом в ответе сервера.

Для того чтобы узнать возможности всего сервера, клиент должен указать в URI звёздочку — «*». Запросы «OPTIONS * HTTP/1.1» могут также применяться для проверки работоспособности сервера (аналогично «пингованию») и тестирования на предмет поддержки сервером протокола HTTP версии 1.1.

Результат выполнения этого метода не кэшируется.

Метод HEAD

Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения.

Заголовки ответа могут кэшироваться. При несовпадении метаданных ресурса с соответствующей информацией в кэше копия ресурса помечается как устаревшая.

Метод PUT

Применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существовало ресурса, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content). Сервер не должен игнорировать некорректные заголовки Content-* передаваемые клиентом вместе с сообщением. Если какой-то из этих заголовков не может быть распознан или не допустим при текущих условиях, то необходимо вернуть код ошибки 501 (Not Implemented).

Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу.

Сообщения ответов сервера на метод PUT не кэшируются.

PATCH

Аналогично PUT, но применяется только к фрагменту ресурса.

 

DELETE

Удаляет указанный ресурс

 

TRACE

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

 

CONNECT

Для использования вместе с прокси-серверами, которые могут динамически переключаться в туннельный режим SSL.

 

LINK

Устанавливает связь указанного ресурса с другими.

 

UNLINK

Убирает связь указанного ресурса с другими.

Коды состояния

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]