Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / !!! ИТ Архив / Лекции / 5_C G I / Лекция 2 - Обзор CGI.doc
Скачиваний:
28
Добавлен:
04.04.2013
Размер:
169.47 Кб
Скачать

Дополнительная информация о пути

Помимо строк запросов, пользователь может передавать в URL дополнительные данные, называемые дополнительной информацией о пути (extra path information). Сервер проверяет, где заканчивается имя программы CGI, все остальные данные считаются "дополнительными" и помещаются в переменную среды PATH_INFO. Следующая строка, которая служит для вызова сценария, включает дополнительную информацию о пути:

http://some.machine/cgi-bin/display.pl/cgi/cgi_doc.txt

Информация после текста display.pl является дополнительным путем. Можно воспользоваться и переменной PATH_TRANSLATED: ее значение включает, помимо значения переменной PATH_INFO, корневой каталог документов (DOCUMENT_ROOT).

Создание виртуальных документов

После завершения обработки полученной информации программа CGI должна создать новый документ, который будет предоставляться браузеру, или указать ссылку на существующий документ. В ОС UNIX программы посылают свою выходную информацию на стандартный вывод (STDOUT) как поток данных, состоящий из двух частей. Первая часть представляет собой полный или частичный HTTP-заголовок, в котором содержится (как минимум) описание формата возвращаемых данных (например HTML, ASCII-текст, GIF и т.д.). Пустая строка обозначает конец заголовка. Вторая часть — это тело выходных данных. В нем содержатся данные в формате, который задан в заголовке. Например:

Content-type: text/html

<html>

<head><title>Спасибо!</title></head>

<body><h1>Спасибо, что заполнили мою гостевую книгу!</h1>

</body></html>

В этом случае единственная строка заголовка выходных данных — Content-Type. Она содержит MIME-тип выходной информации, здесь — HTML (text/html). Эта строка существенно важна для каждой CGI-программы, поскольку она содержит информацию для браузера о том, как следует обрабатывать следующие за заголовком данные. Пустая строка отделяет заголовок от основного текста (который в данном случае имеет формат HTML, как это указано в заголовке.

Для Web-сервера не имеет значения, на каком языке написана программа CGI. В UNIX-системах наиболее популярным языком для написания CGI-программ являются PHP и Perl. Среди других языков, используемых в ОС UNIX, — С, C++, Tcl, Python. Программисты, работающие на компьютерах Macintosh, чаще пользуются языками Applescript и C/C++, а среди разработчиков, применяющих средства Microsoft Windows, популярны ASP, Visual Basic, Perl и C/C++. Для CGI-программирования можно использовать любой язык программирования, в котором предусмотрены средства получения данных с сервера и отправки их обратно.

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

Программы CGI могут формировать полный HTTP-заголовок. В этом случае сервер не дополняет возвращаемые данные какой-либо информацией. Ответ пересылается в том виде, в каком его выдала программа CGI.

Ниже приведен пример выходной информации программы, генерирующей виртуальный HTML-документ. Эта выходная информация включает полный HTTP-заголовок:

НТТР/1.0 200 OK

Date: Thursday, 20-May-04 11:12:13 GMT

Server: Apache/1.3.12

Content-type: text/html

Content-length: 2041

<html>

<head><title>Спасибо!</title></head>

<body><h1>Спасибо, что заполнили мою гостевую книгу!</h1>

</body></html>

Заголовок содержит имя протокола передачи, дату и время ответа, имя и версию сервера. (200 OK — это код состояния, генерируемый протоколом HTTP для сообщения о результатах выполнения запроса, который в данном случае завершился успешно). Кроме того, заголовок содержит тип и значение количества символов (последнее эквивалентно количеству байтов), содержащихся в выходной информации данных.

В результате после щелчка на кнопке “Отправить” пользователь увидит на экране ответ.