|
Что такое CGI?
CGI — это протокол. CGI — это аббревиатура от Common Gateway Interface (общий
шлюзовой интерфейс). Данное понятие определяет стандартный способ, которым
внешние программы должны взаимодействовать с Web-сервером или другими
информационными серверами. Программы, соответствующие этому протоколу,
называются CGI-программами. (CGI-программы, созданные на любом языке написания
скриптов, называются CGI-скриптами.)
Хотя большинство CGI-программ написано с использованием Perl, применять можно
любой язык программирования или написания сценариев, но при условии, что
конечным результатом будет исполняемый файл, который может читать и записывать
информацию в формате, определенном в протоколе CGI. Вторым по популярности
языком програмирования CGI-программ, вероятно является C, а после идут Visual
Basic, AppleScript и языки программирования командных процессоров Unix. Для
написания CGI-программ используется даже Java.
По своей сути CGI — удивительно простой протокол. Он определяет три основных
способа передачи информации с сервера в программу и один способ передачи
информации из программы на сервер.
Получение информации с сервера:
В принципе, можно построить полезную CGI-программу, которой не нужно будет
ничего знать ни о сервере, ни об обращающемуся к нему пользователе. Тем не
менее, имея доступ к такой информации, можно сделать гораздо больше разных
интересных вещей. Протокол CGI позволяет осуществить это тремя способами.
Переменные среды:
Переменные среды — это переменные, которые устанавливаются сервером и к
которым имеет доступ ваша программа. ( В Perl это делается посредством
специального ассоциативного массива (хэша) %ENV.) Эти переменные содержат массу
информации о сервере, вашей программе и посетителе. Более полную информацию о
переменных среды вы найдете в этой статье.
Стандартный ввод:
Если для передачи данных в программу вы пользуетесь методом POST, то сервер
посылает эти данные на стандартный поток ввода вашей программы. (При
использовании метода GET данные появляются в переменной среды QUERY_STRING.)
Сервер также устанавливает переменные среды CONTENT_TYPE и CONTENT_LENGTH в
значения, соответствующие MIME-типу данных (application/x-www-form-urlencoded) и
их длинне, выраженной в байтах.
Командная строка:
Информацию также можно передавать в программу в виде аргументов командной
строки при выполнении программы. Этот метод используется крайне редко — как
правило, только для передачи HTML-запросов ISINDEX.
Передача информации на сервер:
Часть протокола CGI, задающего принцип передачи информации из программы на
сервер, который, в свою очередь, передает ее обратно в броузер посетителя,
является самой простой. Вы лишь записываете информацию на стандартный вывод,
который в Perl обычно реализуется простым оператором print. Единственная
дополнительная операция — предварить выходную информацию HTTP-заголовком,
который определяет ее тип. В большенстве случаев, если выводится HTML-
информация, это можно делать таким Perl-оператором:
print "Content-Type: text/html\n\n";
Два символа новой строки в конце заголовка играют важную роль: пустая строка
указывает, где заканчивается заголовок и начинается содержимое. Здесь описаны
еще несколько типов заголовков, которые могут оказаться полезными в CGI-
программировании.
|