Common Gateway Interface
CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».
Сам интерфейс разработан таким образом, чтобы можно было использовать любой язык программирования, который может работать со стандартными устройствами ввода/вывода. Такими возможностями обладают даже скрипты для встроенных командных интерпретаторов операционных систем, поэтому в простых случаях могут использоваться даже командные скрипты.
Все скрипты, как правило, помещают в каталог cgi (или cgi-bin) сервера, но это необязательно: скрипт может располагаться где угодно, но при этом большинство веб-серверов требуют специальной настройки. В веб-сервере Apache, например, такая настройка может производиться при помощи общего файла настроек httpd.conf или с помощью файла .htaccess в том каталоге, где содержится этот скрипт.
CGI является одним из наиболее распространённых средств создания динамических веб-страниц.
Пример
Пример скрипта Hello World на языке Python:
#!/usr/bin/python
import sys
try:
import cgitb
cgitb.enable()
except ImportError:
sys.stderr = sys.stdout
def cgiprint(inline=''):
sys.stdout.write(inline)
sys.stdout.write('\r\n')
sys.stdout.flush()
contentheader = 'Content-Type: text/html'
thepage = '''<html><head>
<title>%s</title>
</head><body>
%s
</body></html>
'''
h1 = '<h1>%s</h1>'
if __name__ == '__main__':
cgiprint(contentheader) # заголовок вывода
cgiprint() # обязательная пустая строка для отделения заголовка от выводимых данных
title = 'Hello World'
headline = h1 % 'Hello, world!'
print thepage % (title, headline) # вывод кода html
Пример исходного кода программы на языке Pascal:
Program first;
Begin
Writeln('Content-type: text/plain');
Writeln;
Writeln('Hello, world!');
End.
Пример скрипта Hello World на языке C:
#include <stdio.h>
int main(void) {
printf("Content-Type: text/plain;charset=us-ascii\n\n");
printf("Hello, world!\n\n");
return 0;
}
См. также
Ссылки
Литература
- Кевин Мельтцер, Брент Михальски. Разработка CGI-приложений на Perl = Writing CGI Application with Perl. — М.: «Вильямс», 2001. — С. 400. — ISBN 0-201-71014-5.
- Рейф Колберн. Освой самостоятельно CGI-программирование за 24 часа = Sams Teach Yourself CGI in 24 Hours. — М.: «Вильямс», 2001. — С. 368. — ISBN 0-672-31880-6.