СОДЕРЖАНИЕ

Как создать свой сайт Создать сайт
Основы Интернет : FTP HTTP хостинг Вводный курс
Создание сайтов : создать сайт Создание сайтов
Статьи о хостинге : платный бесплатный выделенный сервер Unix Все о хостинге
Учебник HTML Учебник HTML
Учебник CSS Учебник CSS
Учебник CGI : cgi-программирование : методы GET и POST Учебник CGI
Учебник php Учебник PHP
Учебник perl Учебник Perl
Раскрутка сайта : оптимизация кода ключевые слова индекс цитирования регистрация в поисковиках Раскрутка сайта
Заработок на сайте Заработок на сайте
Платёжные системы : rupay webmoney Платежи в сети
книги литература по html css xml flash java Dreamweaver Нужные книги

 

заработок для вебмастера
Заработок для начинающего вебмастера!

 


создать сайт // учебник CGI // как работает CGI-программа

Как работает CGI-программа

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

Как делается запрос на ресурс

Сеанс HTTP (процесс передачи данных по протоколу HTTP) начинается с того, что клиент (обычно это Web-броузер) запрашивает некоторый ресурс у Web-сервера. Вы, конечно, помните, что всякий ресурс однозначно определяется своим URL (uniform resourse locator). Когда речь идёт о простых статических Web-страницах, ресурс представляет собой файл, а URL - положение этого файла на диске.

Предположим, в нашем случае URL выглядит так:
http://w-wb.com/cgi/cgi_01_02.php

Этот URL соответствует файлу cgi_01_02.php расположеному в папке cgi корневого каталога Web-сервера.

Если Web-серверу удалось найти и прочитать этот файл, содержимое файла передается запросившему его броузеру.

Если же URL указывает на CGI-программу, все обстоит немного сложнее. Давайте для примера рассмотрим следующий URL:
http://w-wb.com/cgi-bin/example.cgi

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

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

  1. Существует ли запрошенный файл?

  2. Действительно ли запрошенный файл является CGI-программой?

  3. Есть ли разрешение на выполнение этой программы?

  4. Выполнилась ли программа без ошибок?

  5. Соответствуют ли выходные данные программы запросу броузера? (Эту проверку мы рассмотрим чуть ниже.)

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

Как выполняется запрос

Как говорилось выше, CGI-программа должна генерировать заголовок типа возвращаемых данных, для того чтобы броузер знал, что возвращает программа. Типы возвращаемых данных определяются стандартом MIME. Обычно стандарт MIME ассоциируется с почтовыми сообщениями, но в случае с типом данных работает та же самая система, что и с типом данных, вложенных в сообщение электронной почты. В следующей таблице перечисленны типы данных, которые может возвращать CGI-программа.

Типы данных, возвращаемых CGI-программой
Идентификатор Тип данных
text/html Документы HTML
text/plain Простой текст
image/gif Рисунок GIF
image/jpeg Рисунок JPEG
video/quicktime Анимация QuickTime
application/octet-stream Бинарный файл

Если программа возвращает текст HTML, она должна генерировать такой заголовок типа данных:

Content-type: text/html

Эта информация передаётся серверу, который вместе с другими заголовками передает ее броузеру. Протокол HTTP требует, чтобы заголовок отделялся от содержания двумя символами перевода строки. Когда броузер встречает два последовательных символа перевода строки, он понимает, что заголовок закончился и начинается блок данных, которые должны быть обработаны. Таким образом, проболжая наш пример, если программа example.cgi возвращает HTML-текст, ее полный вывод должен выглядеть приблизительно так:

Content-type: text/html

<html>
<head><title>Простой пример</title></head>
<body>Это простой пример</body>
</html>

Как вы видите, необходимый заголовок отделен от собственно содержания двумя символами перевода строки. (Обратите внимание - два перевода строки выглядят как одна пустая строка!) Кроме того, сервер может включить в передаваемые данные другие заголовки и другие блоки данных. В этом случае полный ответ сервера броузеру может выглядеть так:

HTTP/1.1 200 OK
Date: Sun, 10 Jul 2004 04:21:37 GMT
Server: Apache/1.3.3
Connection: close
Content-type: text/html

<html>
<head><title>Простой пример</title></head>
<body>Это простой пример</body>
</html>

Заголовки HTTP

Значительная часть информации при сеансе HTTP, видна пользователю. Например, запрашиваемый URL или данные, введённые в таблицу, непосредственно видны на экране броузера. Текст HTML, возвращённый сервером, также выводится на экран.

Однако, помимо такой информации, в обмене учавствует много данных, напрямую пользавателю неведимых. Эти данные нужны серверу и броузеру своих внутренних проблем.

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

 

 



 

 

 

 

как создать свой сайт