Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Обработка HTTP-запросов






 

Алгоритм обработки одного HTTP-запроса следующий:

1. Проверка, что обрабатываемая очередь байт содержит полный заголовок HTTP-запроса. Конец заголовка обозначается 4 символами: двойной возврат каретки и перевод строки " \r\n\r\n". Если конец заголовка не обнаружен, то обработка невозможна, и производится выход из процедуры с сообщением об ошибке.

Пример заголовка HTTP-запроса:

GET /My_Web_App/ImpulseResponse.htm? InputSignal=0+0+0.5+1+-1+0+0& iStart_InputSignal=-3& ImpulseResponse=0.5+1+0.5 HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

Referer: https://loopback/My_Web_App/ImpulseResponse.htm

Accept-Language: ru-RU

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv: 11.0) like Gecko

Accept-Encoding: gzip, deflate

Host: loopback

DNT: 1

Connection: Keep-Alive

 

2. Синтаксический анализ заголовка.

2.1. Разделение заголовка на строки. Конец строки обозначается 2 символами: возврат каретки и перевод строки " \r\n\".

2.2. Разбор первой строки заголовка, содержащей обозначение HTTP-метода (GET или POST), строки URL-адреса с параметрами и версии HTTP. Указанные части строки разделены знаком пробела.

2.3. Разбор последующих строк заголовка. Каждая строка представляет собой пару «имя: значение» (в качестве разделителя используется знак двоеточия «:»).

 

3. Разбор строки URL-адреса и параметров запроса.

Пример строки:

/My_Web_App/ImpulseResponse.htm? InputSignal=0+0+0.5+1+-1+0+0& iStart_InputSignal=-3& ImpulseResponse=0.5+1+0.5

 

3.1. Разделение на URL-адрес и параметры производится по знаку “? ”. В нашем примере URL-адрес:

/My_Web_App/ImpulseResponse.htm

 

3.2. Определение имени запрашиваемого файла. Имя запрашиваемого файла содержится в URL-адресе после названия приложения (“My_Web_App”).

 

3.3. Определение параметров запроса. Параметры запроса разделены знаком “& ”. Каждый параметр представляет собой пару «имя=значение». Знаки “+” означают знаки пробелов. Знак “%” и следующие за ним 2 символа означают шестнадцатеричное значение.

 

4. Обработка запроса. Запрос определяется по имени запрашиваемого файла и параметрам. В результате обработки формируется тело ответа, представляющее собой HTML-файл или файл иного типа (например, JPEG), в зависимости от запрашиваемого ресурса.

 

5. Запись заголовков ответа и его тела в выходной буфер рабочего сокета. В заголовке ответе содержится код результата (для положительного результата указывается «200 OK»), длина тела ответа, тип содержимого ответа. После заголовка записываются 4 символа, обозначающие двойной возврат каретки и перевод строки " \r\n\r\n", после чего в бинарном виде записывается тело ответа.

Пример записи ответа:

HTTP/1.1 200 OK

Content-Length: 829

Content-Type: text/html

 

< тело ответа>

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.