Hyppertext Transfer Protocol (HTTP ), протокол пересылки
гипертекста - это язык, которым клиенты и серверы World Wide Web
пользуются для общения между собой.
Принципы работы Все
HTTP-трнзакции имеют один общий формат. Каждый запрос клиента и
ответ сервера состоит из трех частей: строки запроса (ответа), раздела
заголовка и тела. Клиент инициирует транзакцию следующим образом: 1.
Клиент устанавливает связь с сервером по назначенному номеру порта (по
умолчанию 80). Затем клиент посылает запрос документа, указав
HTTP-команду, называемую методом, адрес документа и номер версии
HTTP. Например, в запросе
GET /index.html HTTP/1.0 используется
метод GET, которым с помощью версии 1.0 HTTP запрашивается
документ index.html. 2. Клиент посылает информацию заголовка
(необязательную), чтобы сообщить серверу информацию о своей
конфигурации и данные о форматах документов, которые он
может принимать. Вся информация заголовка указывается построчно, при
этом в каждой строке приводится имя и значение. Например, приведенный
ниже заголовок, посланный клиентом, содержит его имя и номер версии, a
также информацию о некоторых предпочтительных для клиента типах
документов:
USER-AGENT: Mozilla/2.02Gold (WinNT; I) Accept:
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Завершается
пустой строкой. 3. Послав запрос и заголовки, клиент может отправить и
дополнительные данные. Эти данные используются главным образом теми
CGI-программами, которые применяют метод POST. Клиенты могут их
использовать для помещения отредактированной страницы обратно на
Web-сервер.
Сервер отвечает на запросы клиента следующим
образом: 1. Первая часть ответа сервера - строка состояния, содержащая
три поля: версию HTTP, код состояния и описание. Поле версии содержит
номер версии HTTP, которой данный сервер пользуется для передачи
ответа. Код состояния - это трехразрядное число, обозначающее результат
обработки сервером запроса клиента. описание, следующее за кодом
состояния, представляет собой просто понятный для человека текст,
поясняющий код состояния. Например, строка состояния
HTTP/1.0. 200
OK говорит о том, что сервер для ответа использует версию HTTP 1.0. Код
состояния 200 означает, что запрос клиента был успешным и затребованные
данные будут переданы после заголовков. 2. После строки состояния
сервер передает клиенту информацию заголовка, содержащую данные о самом
сервере и затребованном документе. Пример HTTP-заголовка:
Date:
Fri, 20 Mar 1999 08:17:58 GMT Server: NCSA/1.5.2 Last-modified: Mon,
17 Jun 1996 21:53:08 GMT Content-type: text/html Content-lenght:
2482 Завершает заголовок пустая строка.
3. Если запрос клиента
успешен, то посылаются затребованные данные. Это может быть копия файла
или результат выполнения CGI-программы. Если запрос клиента удовлетворить
нельзя, передаются дополнительные данные в виде понятного для
пользователя разьяснения причин, по которым сервер не смог выполнить
данный запрос.
В HTTP 1.0 за передачей сервером затребованных
данных следует зазъединение с клиентом и транзакция считается
завершенной, если не передан заголовок Conection: Кeep Alive. В HTTP
1.1 сервер по умолчанию не разрывает соединение и клиент может посылать
другие запросы. Поскольку во многие документы встроены другие документы
- изображения, кадры, апплеты и т.д., это позволяет сэкономить время и
затраты клиента, которому в противном случае пришлось бы для получения
всего одной страницы многократно соединяться с одним и тем же сервером.
Таким образом, в HTTP 1.1 транзакция может циклически повторяться, пока
клиент или сервер не закроет соединение явно. HTTP не сохраняет
информацию по тразакциям, поэтому в следующей трнзакции
приходится начинать все заново. Преимущество состоит в том, что
HTTP-сервер может обслужить в заданный промежуток времени гораздо
больше клиентов, ибо устраняются дополнительные расходы на отслеживание
сеансов от одного соединения к другому. Есть и недостаток: для
сохранения информации по транзакциям более сложные CGI-программы должны
пользоваться скрытыми полями ввода или внешними средствами, например
"ключиками" NetScape. Запросы клиента Запросы клиента разбиваются на
три раздела. Первая строка сообщения всегда содержит HTTP-команду,
называемую методом, URI, который обозначает запрашиваемый клиентом
файл или ресурс, и номер версии HTTP. Следующие строки запроса клиента
содержат информацию заголовка. Информация заголовка содержит сведения о
клиенте и информационном объекте, который он посылает серверу. Третья
часть клиентского запроса представляет собой тело содержимого -
собственно данные, посылаемые серверу. URI (Uniform Resource
Identifier, универсальный идентификатор ресурса) - это общий термин для
всех допустимых форматов схем адресации, поддерживаемых в WWW.
Сейчас общепринятой является схема адресации с использованием
универсальных локаторов ресурсов (URL). Методы Метод - это
HTTP-команда, с которой начинается первая строка запроса клиента.
Метод сообщает серверу о цели запроса. Для HTTP определены три основных
метода: GET, HEAD и POST. Определены и другие методы, но они не так
широко поддерживаются серверами, как три перечисленных ( хотя эти
другие методы в будущем будут использоваться более часто). При задании
имен методов учитывается регистр, поэтому GET и get
различаются.
Метод GET. GET - зто запрос информации,
расположенной на сервере по указанному URL. GET - наиболее
распространенный метод поиска с помощью броузеров документов для
визуализации. Результат запроса GET может представлять собой, например,
файл, доступный для сервера, результат выполнения программы или
CGI-сценария, выходную информацию аппаратного устройства и т.д. Если
клиент пользуется в своем запросе методом GET, сервер отвечает строкой
состояния, заголовками и затребованными данными. Если сервер не может
обработать запрос вследствие ошибки или отсутствия полномочий, он, как
правило, посылает в информационном разделе ответа текстовое
пояснение. Тело информационного содержимого запроса GET всегда пустое.
GET в переводе на человеческий язык означает примерно следующее:"Дайте
мне этот файл". Для иднтификации указанных в запросе клиента файла или
программы обычно используется полное имя обьекта на сервере. Ниже
приведен пример успешного запроса GET на получение файла. Клиент посылает
запрос: GET /index.html HTTP/1.0 Connction:
Keep-Alive User-Agent: Mozilla/2.02Gold (WinNT; I) Host:
www.ora.com Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, */* Сервер отвечает: HTTP/1.0 200 Document
follows Date: Fri, 20 Sep 1996 08:17:58 GMT Server:
NCSA/1.5.2 Content-type: text/html Content-lenght: 2482 (далее
следует тело документа) Метод GET используется также для передачи выходной
информации в CGI-программы посредством тегов форм. Поскольку тело
запроса GET пусто, входные данные присоединяются к URL в строке GET
запроса. Если в теге
|