CGI (Common Gateway Interface) – общий шлюзовой интерфейс

Один из способов формирования динамических html-документов (документов, создаваемых программно на серверной стороне «на лету») заключается в использовании CGI-скриптов.

CGI — это интерфейс, используемый для связи внешней программы, работающей на серверной стороне, с web-сервером.

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

CGI-скрипт, как правило, помещается в каталог cgi (или cgi-bin) web-сервера, но это требование необязательно, так как CGI-скрипт может располагаться в любом каталоге, но при этом большинство web-серверов требуют дополнительной настройки.

CGI-скрипт, использующий CGI-интерфейс, получает информацию от клиента, обрабатывает ее, и возвращает результат (динамически сформированный html-документ, гиперссылку на существующий html-документ, графическое изображение и т.д.) Так как CGI-скрипт — это программа, она должна быть оттранслирована для той операционной системы, под управлением которой работает web-сервер.

На стороне клиента отображается форма, размеченная тегом <form>, содержащая некоторые поля для ввода данных и кнопку для отсылки данных. После заполнения полей и нажатия кнопки данные в запросе клиента пересылаются на сторону сервера, где web-сервер передает присланные данные CGI-скрипту, используя CGI.

После обработки полученных данных CGI-скрипт создает документ и передает его web-серверу, который в ответе сервера возвращает документ на сторону клиента.

Передача информации от клиента к серверу и передача сформированного документа от сервера к клиенту изображена на рисунке.

1 — клиент формирует запрос, включая в него данные, внесенные в поля формы, запрос отсылается web-серверу.

2 — web-сервер, используя CGI, передает присланные в запросе данные CGI-скрипту.

3 — CGI-скрипт на основе данных формирует документ, возвращает его web-серверу, который, в свою очередь, формирует ответ сервера, включая в него документ, созданный CGI-скриптом, и возвращает ответ клиенту.

 

Для создания формы используется тег <form>.

<form action=URL method=GET | POST>

</form>

 

Атрибут action определяет url GCI-скрипта, обрабатывающего присланные данные.

Атрибут method определяет метод передачи данных. По умолчанию используется метод get.

Метод GET

Метод GET предполагает передачу данных GCI-скрипту через переменные среды (environment variables), устанавливаемые на стороне сервера.

Для передачи данных, присланных методом GET, используется переменная QUERY_STRING. Значением переменной QUERY_STRING будет строка, содержащая данные в формате name1=value1&name2=value2& … &nameN=valueN, где name — это имя поля формы, value — значение, определенное пользователем для поля формы.

Метод POST

При использовании метода POST GCI-скрипт получает присланные данные через стандартный поток ввода.

Объем переданных данных (в байтах) можно получить через переменную окружения CONTENT_LENGTH.