📜 Что такое CGI (Common Gateway Interface)?

by itisgood
Веб-серверы являются важной частью Интернета.
Веб-серверы, используются для обслуживания веб-сайтов, веб-страниц, API-интерфейсов, документов, видеоизображений и т. д.
Веб-серверы, как правило, предназначены для динамического реагирования на запросы пользователей надлежащим образом.
CGI (Common Gateway Interface) – это технология, предназначенная для обеспечения динамического программирования и возможностей отклика для веб-серверов.

Что такое CGI (Common Gateway Interface)?

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

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

Скрипты CGI обычно создают веб-страницы, содержащие HTML, JavaScript, CSS, изображения, API, текст ASCII и т. д.

CGI впервые создан как лучший метод в NCSA (Национальный центр приложений суперкомпьютеров) для вызова исполняемых файлов командной строки из Интернета.

Благодаря широкому распространению и популярности стандарт RFC 3875 создан в ноябре 1997 года.

CGI скрипты

CGI-скрипты, в основном, созданы с использованием языка программирования C, потому что в его стандарте для определения используется язык программирования C.

Функция getenv () библиотеки C используется для получения переменных окружения из запросов.

CGI-скрипты хранятся в общем каталоге /usr/local/apache/htdocs/cgi-bin, но путь можно изменить по желанию.

CGI могут использоваться на разных языках программирования и скритах, таких как Bash, Perl, Python и т. д., но для простоты и практической разработки и изменения языков сценариев предпочтительными являются Bash и Perl.

Пример CGI скрипта

Ниже мы видим пример скрипта CGI, который разработан на языке сценариев Perl.

#!/usr/bin/perl

=head1 DESCRIPTION

printenvThis CGI script will print environment variables

=cut

print "Content-Type: text/plain\n\n";

for my $var ( sort keys %ENV ) {

    printf "%s = \"%s\"\n", $var, $ENV{$var};
  • Строка #! /usr/bin/perl используется для установки данного интерпретатора файлов или языка программирования. Эта строка установит интерпретатор как Perl, который находится в /usr/bin/ perl.
  • =head1 DESCRIPTION это комментарий, который просто помещает заголовок в документацию, а под строками также есть комментарий
  • =cut это конец комментария.
  • for my $var ( sort keys %ENV) выведет первую строку HTTP-ответа на запрос. Эта строка выведет тип содержимого в виде простого текста.

Когда мы вызывем этот скрипт Perl CGI, мы получим вывод или ответ HTTP в формате HTML, как показано ниже.

COMSPEC="C:\Windows\system32\cmd.exe"

DOCUMENT_ROOT="C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"

GATEWAY_INTERFACE="CGI/1.1"

HOME="/home/SYSTEM"

HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"

HTTP_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0.7,*;q=0.7"

HTTP_ACCEPT_ENCODING="gzip, deflate, br"

HTTP_ACCEPT_LANGUAGE="en-us,en;q=0.5"

HTTP_CONNECTION="keep-alive"

HTTP_HOST="example.com"

HTTP_USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:67.0) Gecko/20100101 Firefox/66.0"

PATH="/home/SYSTEM/bin:/bin:/cygdrive/c/progra~2/php:/cygdrive/c/windows/system32:..."

PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"

PATH_INFO="/foo/bar"

PATH_TRANSLATED="C:\Program Files (x86)\Apache Software Foundation\Apache2.4\htdocs\foo\bar"

QUERY_STRING="var1=value1&var2=with%20percent%20encoding"

REMOTE_ADDR="127.0.0.1"

REMOTE_PORT="63555"

REQUEST_METHOD="GET"

REQUEST_URI="/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding"

SCRIPT_FILENAME="C:/Program Files (x86)/Apache Software Foundation/Apache2.4/cgi-bin/printenv.pl"

SCRIPT_NAME="/cgi-bin/printenv.pl"

SERVER_ADDR="127.0.0.1"

SERVER_ADMIN="(server admin's email address)"

SERVER_NAME="127.0.0.1"

SERVER_PORT="80"

SERVER_PROTOCOL="HTTP/1.1"

SERVER_SIGNATURE=""

SERVER_SOFTWARE="Apache/2.2.39 (Win32) PHP/7.1.7"

SYSTEMROOT="C:\Windows"

TERM="cygwin"

WINDIR="C:\Windows"

You may also like

Leave a Comment