Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в Веб программирование.doc
Скачиваний:
81
Добавлен:
07.11.2018
Размер:
4.42 Mб
Скачать

Передача данных от клиента к серверу и обратно. Протокол http

Основной протокол передачи гипертекстовых данных – это HTTP. HTTP основывается на запросах/ответах. При этом запрашивающая программа - клиент устанавливает связь с программой- сервером и посылает запрос серверу в следующей форме:

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

Запрос создается браузером клиента. Когда пользователь набирает в браузере URL-адрес: http:bsu.by/my.php вот что при этом происходит:

Браузер разбирает URL-адрес и решает следующее:

-Использовать протокол HTTP.

-Извлечь запрошенный ресурс с компьютера, находящегося на bsu. by.

-Получить информационный ресурс, известный, как /my.php.

На основе данной информации создается запрос HTTP, выглядящий следующим образом:

GET /my.php HTTP/1.1

Accept: image/gif, image/png, image/jpeg, */*

Accept-Language: en-us

Accept-Encoding: gzip, deflate

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

Windows XP; .NET CLR 1.1.4322)

Host:bsu.by

Connection: Keep-Alive

Вот что эти строки значат:

GET — метод HTTP который означает: "Дай информацию, находящуюся в /му.php, и вышли ее, используя протокол HTTP 1.1".

Accept — "я могу понимать графическую информацию в следующих форматах".

Accept-Language — "язык, который я понимаю — английский, американский ". Accept-Encoding — "мне можно отправлять данные в сжатом виде, поскольку я понимаю типы сжатия gzip и deflate".

User-Agent — "тип моего браузера — Microsoft Explorer 8, выполняющийся под управлением Windows XP".

Host — "доставь мне информацию /my.php с компьютера, находящегося на хосте feedster.com".

Connection: Keep-Alive — "держи подключение HTTP открытым, пока браузер не закроет его". Это повышает производительность, поскольку соединение не нужно закрывать и снова открывать для каждого подключения. Без Keep-Alive Web-страница будет иметь множество подключений.

Когда Web-сервер получает подобный запрос, он должен просмотреть информацию на сервере, которая представлена /my. php.

В конце запроса помещается его тело.

Сервер отвечает на запрос сообщением, содержащим строку статуса (включая версию протокола и код статуса - успех или ошибка), за которой следует MIME-подобное сообщение, включающее в себя информацию о сервере, метаинформацию о содержании ответа, и, само тело ответа. Ответ (response) сервера посылается клиенту (браузеру) в виде:

НТТР/1.1 200 0К

Date: Моп, 08 Dec 2003 16:46:40 GMT

Server: Apache/1.3.27 (Unix) mod_throttle/3.1.2 PHP/4.3.2

X-Powered-By: PHP/4.3.2

X-Accelerated-By: PHPA/1.3.3r2

Connection: close

Content-Type: text/html; charset=utf-8

<html lang="en-US" xml:lang="en-US" «nlns="http://www.w3.org/1999/xhtml">

<head>

<script>

HTTP-ответ состоит из двух частей. В начале идет порция сведений о самой запрошенной информации - заголовок ответа (response header). Затем идет пустая строка и далее — сама запрошенная информация. Эта вторая часть называется телом (body). Вот что означают части заголовка:

HTTP/1.1 — первая строка сообщает клиенту, что информация будет отправлена по протоколу HTTP версии 1.1. Код 200 состояния HTTP означает: "Все хорошо, документ найден и сейчас будет отправлен".

Date — сообщает клиенту дату, установленную на сервере, с которого поступает информация. Стандартный часовой пояс — GMT, то есть время по Гринвичу.

Server — каков тип сервера, предоставляющего информацию.

X-Powered-By — каким инструментом поддерживается сервер (конечно, РНР).

X-Accelerated-By — какой инструмент повышает производительность сервера (эти два Х-заголовка не обязательны и специфичный для конкретной конфигу¬рации сервера).

Connection — сообщает клиенту, что соединение будет закрыто после того, как сервер завершит отправку информации.

Content-Type — сообщает клиенту, какой тип содержимого будет отправлен. В дополнение также указывается набор символов.