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

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

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

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

Предположим, в нашем случае URL выглядит так:
http://webmaster.xeno.ru/cgi_01_02.shtml

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

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

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

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

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

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

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

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

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

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

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