Запрос протокола HTTP

Команды протокола HTTP

Сообщение протокола HTTP должно быть либо запросом клиента серверу, либо ответом сервера клиенту.

Оба типа сообщений содержат следующие компоненты:

· начальная строка;

· ноль или несколько строк заголовков;

· пустая строка (содержит только символы возврата каретки – CR и перехода на новую строку – LF);

· тело сообщения (может отсутствовать).

Соединение HTTP должно открываться клиентом перед каждым запросом и закрываться сервером после отправки ответа. Как клиент, так и сервер должны иметь в виду, что соединение может быть преждевременно закрыто либо пользователем, либо по истечении времени соединения, либо из-за сбоя системы.

После установления соединения ТСР между клиентом и сервером HTTP, клиент отправляет на сервер запрос.

Начальная строка запроса имеет следующий формат (поля строки отделяются друг от друга одним или несколькими пробелами):

метод URL версия-HTTP

Поле метод задает идентификатор метода обращения к ресурсу. Наиболее используемыми методами являются GET и POST.

Методы GET и POST запрашивает ресурс, расположенный по заданному URL (например, файл Web-страницы). Различие между ними заключается в следующем: если ресурсу URL для работы необхо­димы параметры, то для метода GET они должны быть указаны в самом URL после символа "?", а для метода POST – в теле запроса.

Помимо этих двух методов для протокола HTTP определены следующие методы:

· HEAD – запрос информации о ресурсе, указанном в URL (сам запрошенный ресурс при этом не посылается);

· OPTIONS – если задан URL, запрос информации о возможных методах запроса объекта. Если в качестве URL задан символ "*", запрос данных о параметрах Web-сервера;

· PUT – отправляет в теле запроса данные (например, файл) на Web-сервер и записывает их по адресу, указанному в URL (при этом, если файл с заданным именем уже есть, он модифицируется);

· DELETE – удаляет ресурс, указанный в URL на Web-сервере (обычно этот метод на сервере отключен);

· TRACE – Web-сервер должен немедленно отправить поступившую ин­формацию обратно (этот метод используется для получения информации о временах прохождения и обработки запросов).

Параметр URL задает полный или усеченный (начиная с поля путь-доступа) URL запрашиваемого ресурса.

Параметр версия-HTTP задает версию протокола HTTP в виде HTTP/1.0 или HTTP/1.1.

Пример 4.6.1. Задание начальной строки запроса:

GET https://www.mysite.com/maindoc.html HTTP/1.1

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

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

Имя-поля может содержать любые символы кодировки ASCII, за исключением управляющих и пробельных символов (обычно используются латинские буквы и символ "-"). В имени поля буквы верхнего и нижнего регистров считаются одинаковыми.

В значении-поля могут быть использованы любые символы, в том числе и пробельные, но, как правило, иcпользуются также символы ASCII, за исключением управляющих символов. Между символом ":" и значением-поля должен быть хотя бы один пробел. Значение-поля может быть продолжено в следующей строке (в этом случае первым символом строки продолжения должен быть пробел или символ горизонтальной табуляции).

Поля заголовков запроса можно разделить на следующие группы:

· общие заголовки (General Headers) (могут использовать­ся как в запросе, так и ответе сервера HTTP). Поля этой группы могут использоваться только тогда, когда задано тело сообщения. В эту группу входят следующие основные поля:

Ø поле Date: (задает время построения сообщения);

Ø поле Cash-Control: (управление кэшированием принимаемых и передаваемых сообщений, например, значение поля max-age=600, задает запрос ресурса, с момента создания которого прошло не более 600 секунд);

Ø поле Pragma: (для установки специальных, зависящих от реализации, директив участникам соединения, например, значение поля no-cache не позволяет промежуточным объектам соединения использовать кэш при ответе на запрос);

Ø поле Transfer-Encoding: (задает способ кодирования для передаваемых данных);

Ø поле Warning: (задает дополнительную информацию о состоянии передаваемого сообщения);

Ø поле Connection: (тип соединения, если указано значение Keep-Alive, Web-браузер просит сервер поддерживать соединение открытым, чтобы можно было принимать несколько элементов, используя одно и то же соединение, если же указано значение close, соединение закрывается).

· заголовки запроса (Request Headers) появляется только в запросах клиен­тов и позволяет клиентам отправлять на сервер дополнительную ин­формацию о себе и о запросе. В эту группу входят следующие основные поля:

Ø поле Authorization: (информация аутентификации пользо­вателя);

Ø поле From: (адрес пользователя в Internet);

Ø поле Host: (адрес и порт Web-сервера, на который отправляется запрос);

Ø поле User-Agent: (информация о программе клиента HTTP);

Ø поле MIME-version: (версия протокола MIME, который понимает Web-браузер);

Ø поле Referer: (URL предшествующего ресурса);

Ø поля If-Modified-Since: дата время и If-Unmodified-Since: дата время (при обработке запроса, проверяется, время последнего изменения ресурса и посылается либо сам ресурс, либо сообщение о том, что ресурс не изменился – при работе с методом GET);

Ø поля If-Match: переключатель и If-None-Match: переключатель (запрос должен быть выполнен только при совпадении или несовпадении условия);

Ø поля Range: и If-Range: переключатель (для запроса определенного диапазона данных при заданном условии);

Ø поле Accept: (список MIME-типов данных, принимаемых Web-браузером, например: text/html, image.gif или */* – все данные);

Ø поля Accept-Charset:, Accept-Encoding:, Accept-Language: (определяют, соответственно, допустимые в ответе значения символьного набора, типов кодировок и используемого языка).

· заголовки передаваемого сообщения (Entity Headers) содержит инфор­мацию о структуре и формате тела запроса, или, если тело сообщения отсутствует, информацию о запрашиваемом ресурсе (может появляться как в запросе клиента, так и ответе сервера). В эту группу входят следующие основные поля:

Ø поле Allow: (список методов, поддерживаемых ресурсом);

Ø поле Content-Encoding: (идентификатор типа дополнитель­ной кодировки ресурса, т. е. для использования этого ресурса он дол­жен быть перекодирован указанным алгоритмом);

Ø поле Content-Length: (длина тела сообщения);

Ø поле Content-Type: (тип ресурса и таблицу кодировки пред­ставляемых данных, например, us-ascii, iso8580-1, windows-1251, koi8-r и др.);

Ø поле Content-Language: (основные национальные языки, используемые при формиро­вании тела сообщения);

Ø поле Expires: (дата окончания срока действия ресурса);

Ø поле Last-Modified: (дата и время последнего изменения ресурса).

Пример 4.6.2. Запрос по протоколу HTTP с использованием метода GET:

GET /fantasy/ HTTP/1.1

Host: www.books.org:80

Accept: image/gif, image/jpeg, image/png, text/html

Accept-Charset: utf-8, windows-1251

Accept-Encoding: gzip

Accept-Language: en, en-GB, de, fr, ru

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0;

Windows NT 5.1; InfoPath.2;.NET CLR 2.0.50727;

MEGAUPLOAD 2.0)

Date: Tue, 15 Nov 1994 08:12:31 GMT

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

From: webmaster@w3.org

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Referer:

https://www.w3.оrg/hypertext/Data Sources/Overview.html

Allow: GET, HEAD

Content-Length: 3495

Content-Type: text/html; charset=windows-1251

Expires: Thu, 01 Dec 2002 16:00:00 GMT

Last-Modified: Tue, 15 Nov 1999 12:45:26 GMT

Content-Language: ru, en

Тело запроса (если оно есть) обычно содержит либо передаваемые данные (при использовании метода PUT), либо параметры, передаваемые с использованием метода POST.

Пример 4.6.3. Запросы по протоколу HTTP с использованием метода PUT и POST:

1. Передача документа HTML на сервер HTTP с использованием метода:

PUT /myWebPage.html HTTP/1.1

Accept: */*

Connection: close

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru;

rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.6;

MEGAUPLOAD 1.0

Content-Length: 2127

Content-Type: text/html; charset=windows-1251

<html><head>…</head><body>…</body></html>

2. Передача параметров на сервер HTTP с использованием метода POST:

POST /logonPage.php HTTP/1.1

Accept: */*

User-Agent: Opera/9.25 (Windows NT 5.1; U; ru)

Content-Length: 29

Content-Type: application/x-www-form-urlencode

logon=Ivanov

&password=stud1


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: