Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Платформенно-независимый интерфейс CGI
Значительные интернет-ресурсы могут быть созданы с применением технологии CGI. Платформенно-независимый интерфейс CGI (Common Gateway Interface – дословно – общий шлюзовой интерфейс) используется для исполнения программ совместно с Web-сервером. Такие программы называются CGI-приложениями. Рассмотрим как работает данная технология [5], [6]. Допустим, набрав URL в строке адреса в браузере, посредством заполнения HTML-формы, или любым другим образом пользователь запрашивает следующий URL: http: //www.server.ru/some-path/cgi-script.extИными словами, пользователь обращается к серверу www.server.ru по протоколу HTTP, запрашивает из каталога /some-path/ файл cgi-script.ext и рассчитывает получить Web-документ, например, HTML-файл или файл другого формата, например, рисунок. Так и произойдет, если такой документ существует и находится в указанном каталоге Web-сервера. Отметим, что протокол HTTP не накладывает ограничений на тип запрашиваемого ресурса. Следовательно, файл cgi-script.ext может быть вовсе не изображением, не привычным HTML-документом, а программой – исполняемым файлом. В этом случае Web-сервер инициирует запуск этой программы на выполнение, а пользователю возвратит результат ее работы – все данные, выведенные программой через стандартный поток вывода STDOUT. В зависимости от решаемой задачи в CGI-программе может быть выбран любой из поддерживаемых протоколом HTTP форматов данных: текст, изображение, документ в HTML-формате с соответствующим форматированием, аудиофайл и прочее. Пользователь же не заметит никакой разницы, загрузил ли он существовавший документ с диска Web-сервера, или этот документ был создан для него CGI-программой «на лету». CGI-программа может представлять собой любой исполняемый файл – будь то программа, написанная на языке С, Shell-скрипт или программа на Perl. Вообще приложениями CGI называются программы, которые, пользуясь этим интерфейсом, получают через протокол HTTP информацию от удаленного пользователя, обрабатывают ее, и возвращают результат обработки обратно в виде ссылки на уже существующий документ HTML или другой объект (например, графическое изображение) или в виде документа HTML, созданного динамически. Из-за того, что очень часто такие программы пишутся именно на языках-интерпретаторах (подобных Basic, Perl, PHP), их традиционно называют сценариями. Преимущества применения такой технологии очевидны. С применением любого языка высокого уровня, имеющегося в операционной системе Web-сервера, можно написать и откомпилировать программу любой сложности, выполняющую практически любую задачу. CGI предусматривает возможность передать серверу информацию от клиента – различные параметры, которые могли бы анализироваться CGI-программой. Способ передачи параметров определяется методом, определяемым в заголовке HTTP-запроса. При использовании метода GET это достигается перечислением требуемых параметров в URL в виде пар переменная=значение. Тогда наш URL будет выглядеть так: http: //www.server.ru/some-path/cgi-script.ext? param1=value1& param2=value2...Строка параметров отделяется от имени CGI-программы символом ? . Эта строка должна быть особым подготовлена – все символы с кодами больше 127 должны быть представлены комбинацией символов % и шестнадцатеричным представлением кода символа, например, символ с кодом 142 (русская буква «О») будет представлен как %8Е. Кроме того, все пробелы должны быть заменены символом +. Строка параметров передается программе через переменную окружения QUERY_STRING. Анализируя ее и выбирая из нее требуемые параметры, CGI-программа может выполнять определенные действия, и действовать соответствующим образом, например, по переданным в качестве параметров имени пользователя и паролю провести аутентификацию пользователя, в случае подтверждения подлинности пользователя предоставить ему определенный сервис, а в случае неуспешной аутентификации выдать предупреждающее сообщение. Кроме перечисленного метода существуют еще два способа передачи параметров. Строка URL в некотором смысле подобна командной строке операционных систем. Как при запуске программ в ОС, CGI-программе можно передать параметры в командной строке. Тогда, например, при использовании для написания CGI-программы языка С или Perl, внутри программы такие параметры будут доступны через массив ARGV[]. Для передачи параметров таким образом строка параметров должна содержать список значений параметров, соединенных знаками +. Например, наш URL выглядел бы так: http: //www.server.ru/some-path/cgi-script.ext? value1+value2В этом примере передача параметров осуществляется так же, как если бы мы запустили программу cgi-script.ext в командной строке: Третий способ осуществляется при использовании в HTTP-запросе метода POST. В этом случае строка параметров передается сценарию через стандартный поток ввода (STDIN). Однако, в этом случае так же сохраняется возможность передачи параметров через URL (соответственно, данные будут доступны в QUERY_STRING). Метод POST, как правило, используется при передаче на сервер данных из больших HTML-форм, или при передаче на сервер файлов. Отметим, что во всех случаях информация, передаваемая на сервер, должна быть закодирована, как излагалось ранее. Задача написания программных процедур, осуществляющих раскодирование информации, интерпретацию переданной строки параметров, выделения из нее полей и значений возлагается на программиста. Отразим функциональную схему работы данной технологии на следующем рисунке (см. рис. 2.3): Область применения технологии CGI крайне обширна – возможно динамическое построение HTML-документов, изображений, возможно выполнение запросов к серверным базам данных, осуществима реализация удаленных вычислений – если в качестве сервера выступает высокопроизводительный компьютер, то с помощью технологии CGI возможно выполнить передачу исходных данных и получить результат вычисления. Отметим, что, фактически, до недавнего времени весь процесс создания динамических Web-документов сводился к программированию CGI-приложений. Популярное:
|
Последнее изменение этой страницы: 2016-05-03; Просмотров: 667; Нарушение авторского права страницы