Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 [ 95 ] 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122


20-йчас

Работа с HTML-кодом и CGI-программами

На этом занятии вы узнаете, как с помощью можно сделать свой

Web-узел более гибким и управляемым. Основные темы этого занятия.

• Каким образом HTML-код попадает из сервера к вашему броузеру.

• Каграммы постлают что-либо, отличное от HTML-страниц.

• Как напрямую передать значения CGI-профамме.

• Как работают серверные включения (SSI).

• Как получить информацию о броузере и сервере.

Протокол http

На 17-м занятии, "Введение в CGI", мы уже говорили о том, как осуществляется взаимодействие между Web-броузером (таким как Netscape или Internet Explorer) и Web-сервером (например, Apache или IIS) с помощью протокола CGI. Рассматриваемый нами процесс б1л несколько упрощен. Теперь, после того как вы узнали, что такое CGI,

пришло время разобраться с протоколами взаимодействия броузера и сервера более подробно. Чуть позже на этом же занятии вы познакомитесь с некоторыми методами управления этим взаимодействием, позволяющими решать ряд интересных задач.

Упомянутое выше взаимодействие сервера и броузера описывается специальным протоколом, который называется протокол передачи гипертекста (Hypertext Transfer Protocol- HTTP). В настоящее время применяются две версии этого стандарта: HTTP 1,0 и HTTP 1.1 (для обсуждаемых ниже вопросов подходит любая из них).


Документы стандартов, в которых описаны протоколы, используемые в internet, называются Request For Comments, или RFC. Эти документы, поддерживаемые организацией Intemet Engineering Task Force (IETF), можно просмотреть в Web по адресу http: www,ietf.org. Протокол HTTP описан в документах RFC 1945 и RFC 2616. Однако имейте в виду, что эти документы рассчитаны на подготовленных пользователей.



Когда ваш Web-броузер устанавливает соединения с Web-сервером, броузер посылает серверу начальное сообщение, которое выглядит следующим образом:

http: testserver/ HTTP/LO Connection: Keep-Alive

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

Accept-Oiarset: iso-8859-1, *,atf-8

Accept-Encoding: gzip

Accept-Language: en, en-GB, de, fr, ja, ко, zii Host: testserver:80

User-Agent: /4.51 [en]C-c32f404p {WinNTj U)

По строке OET можно судить о том, с какого адреса вы пытаетесь получить документ и какую версию протокола используете. В данном случае вы используете версию 1.0 протокола HTTP.

Строка Connection означает, что вы хотели бы оставить это соединение открытым для получения нескольких страниц сразу. По умолчанию броузер создает отдельное соединение для каждого фрейма, страницы и изображения на Web-странице Директива Keep-Alive просит сервер поддерживать соединение открытым, чтобы можно было принимать несколько элементов, используя одно и то же соединение.

Строки Accept определяют, какие виды данных вы хотели бы принимать с помощью этого соединения. Символы */* в конце первой строки Accept означают, что вы не прочь принимать любые виды данных. Следующая строка (iso-8S59-l и остальные) определяет, какое кодирование символов может быть использовано для документа. Строка Accept-Encoding: gzip в данном случае означает, что для сжатия данных, получаемых от сервера, с целью их быстрой передачи может быть использована утилита gzip (ONU Zip). Наконец, строка Accept-Language говорит о том, какие языки приемлемы для этого броузера: английский (США), английский (Великобритания), немецкий, французский и т.д.

В строке Host указывается имя сервера, обслуживающего Web-узел Благодаря виртуальности обслуживания (пояснения ниже) это имя может отличаться от имени ком-

ньютера в URL.

Наконец, броузер идентифицирует себя для Web-сервера как Mozilla/4.51 [еп]С-c32tmp (WinNT; U). В Web-терминологии броузер называется пользовательским агентом (user agent).

Затем сервер посылает броузеру ответ, который выглядит примерно так:

GET iittp: testserver/ -> 200 OK Date: Thu, 02 Sep 1999 19:54:39 ШГ Server: Netscape-Enterprise/3,5.1G

Content-Length: 2222 Content-Type: text/html

Last-Modified: Wed, 01 Sep 1999 17:12:03 CbT

За ответом следует запрашиваемой вами страницы.

Строка OET в данном случае означает, что сервер собирается передать броузеру

Web-страницу Код возврата 200 свидетельствует о том, что "все" прошло прекрасно. При этом сервер не забывает сказать "несколько слов о себе", идентифицируя себя с помощью строки Server: в данном случае у нас "работает" Web-сервер Netscape-

Enterprise/3.5.1O.

Строка Content-Length означает, что броузеру б]ло передано 2222 байта. На основе этих данных ваш броузер теперь сможет вычислить процент завершения загрузки страницы. Строка Content-Type определяет тип посланной обратно страницы. Для HTML-страниц указывается тин text/iitml, а для изображений может быть установлен тип image/jpeg.



По дате Last-Modified броузер может "судить" о том, была ли изменена страница с

момента ее последней загрузки. Большинство Web-броузеров помещает загруженные ранее страницы в локальную кэш-память, чтобы при повторном обращении к этой странице не нужно было ее снова и снова загружать из Internet. При этом полученная от сервера дата сравнивается с датой сохраненной копии, находящейся в кэш-памяти. Если страница на сервере не была изменена, броузер использует локальную копию.

Пример: получение страницы вручную

При желании можно получить Web-страницу вручную. К этой возможности программисты часто прибегают при тестировании СО1-пр01рамм, чтобы убедиться в том, что Web-сервер посылает корректные ответы.

Для выполнения этого примера вам потребуется специальная программа, называемая Ге/л/-клиентом. Telnet-клиент - это программа доступа к удаленному компьютеру с помощью программы эмуляции терминала, исходное назначение которой - обеспечить удаленное подключение к рабочим станциям UNIX. Однако она часто используется для задач отладки протокола HTTP.

Если у вас установлена система UNIX, то в ее поставку обязательно должна входить утилита telnet. Если вы используете Microsoft Windows, то программа telnet автоматически инсталлируется при установке протокола TCP/IP. Чтобы запустить Telnet-клиент, просто используйте команду Втполнить из системного меню Пуск. Если же у вас не установлена программа telnet или вы работаете в системе Macintosh, попробуйте поискать Telnet-клиент в Internet и загрузить его на свой компьютер.

Подключение к Web-серверу с помощью telnet осуществляется следующим образом: $ telnet rver.com 80

где www.webseer.com - имя Web-сервера, а 80 - номер порта, к которому вы хотите подключиться (именно этот порт обычно используется Web-серверами для установки соединения по протоколу HTTP). Если ваша программа telnet имеет графический интерфейс,

то, возможно, придется установить эти значения в специальном диалоговом окне.

После подключения Telnet-клиента вы можете не получить никакого символа

приглашения на ввод или сообщения о факте подключения. Не беспокойтесь: это

нормальная ситуация. Сервер HTTP ожидает, что клиент "заговорит" первым, поэтому от сервера и не ожидается никакого приглашения. В системе UNIX вы получите

сообщение, которое может иметь следующий вид:

Tryiiig www. webserver, com

Connected to www.webserver.com

Езсгре character is *]

Работая в других операционных системах (Windows или Macintosh), вы не увидите подобного сообшения.

Теперь нужно аккуратно и побыстрее ввести следующее:

(ЕГ ht:/Aww.weDserver.cnn/ НТТР/1.0

После ввода этой строки нажмите клавишу <Enter> дважды. Web-сервер должен ответить обычным HTTP-заголовком и страницей верхнего уровня для данного Web-узла, а затем закрыть сеанс связи.

Пример: получение нетекстовой информации

Ваша CGI-программа не обязательно должна возвращать броузеру HTML-код. В действительности CGI-программа может отсылать броузеру все, что тот сможет принять и обработать.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 [ 95 ] 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122