Что такое cgi программа

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

lectures.www / docs / 5.web.server / cgi.rst

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
524 lines (351 sloc) 22.7 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

.. seealso:: * https://ru.wikipedia.org/wiki/CGI * http://www.ietf.org/rfc/rfc3875.txt * `Лекции ОмГТУ, кафедра АСОИУ `_ * http://webpython.codepoint.net/cgi_tutorial

CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».

С ЧЕГО НАЧАТЬ ИЗУЧЕНИЕ 3D | CGI

Поскольку гипертекст статичен по своей природе, веб-страница не может непосредственно взаимодействовать с пользователем. До появления JavaScript, не было иной возможности отреагировать на действия пользователя, кроме как передать введенные им данные на веб-сервер для дальнейшей обработки. В случае CGI эта обработка осуществляется с помощью внешних программ и скриптов, обращение к которым выполняется через стандартизованный (см. RFC 3875: CGI Version 1.1) интерфейс — общий шлюз.

Упрощенная модель, иллюстрирующая работу CGI:

Сам интерфейс разработан таким образом, чтобы можно было использовать любой язык программирования, который может работать со стандартными устройствами ввода-вывода. Такими возможностями обладают даже скрипты для встроенных командных интерпретаторов операционных систем, поэтому в простых случаях могут использоваться даже командные скрипты.

Как работает CGI?

Обобщенный алгоритм работы через CGI можно представить в следующем виде:

  1. Клиент запрашивает CGI-приложение по его URI.
  2. Веб-сервер принимает запрос и устанавливает переменные окружения, через них приложению передаются данные и служебная информация.
  3. Веб-сервер перенаправляет запросы через стандартный поток ввода (stdin) на вход вызываемой программы.
  4. CGI-приложение выполняет все необходимые операции и формирует результаты в виде HTML.
  5. Сформированный гипертекст возвращается веб-серверу через стандартный поток вывода (stdout). Сообщения об ошибках передаются через stderr.
  6. Веб-сервер передает результаты запроса клиенту.

Области применения CGI

Это обеспечивается возможностью подключения CGI-скрипта к базе данных, а также возможностью обращаться к файловой системе сервера. Таким образом CGI-скрипт может сохранять информацию в таблицах БД или файлах и получать ее оттуда по запросу, чего нельзя сделать средствами HTML.

Что такое CGI?

CGI — это не язык программирования! Это простой протокол, позволяющий веб-серверу передавать данные через stdin и читать их из stdout. Поэтому в качестве CGI-обработчика может использоваться любая серверная программа, способная работать со стандартными потоками ввода-вывода.

Пример на Python:

#!/usr/bin/python print(«»»Content-Type: text/plain Hello, world!»»»)

В этом коде строка #!/usr/bin/python указывает полный путь к интерпретатору Python.

#include stdio.h> int main(void) < printf(«Content-Type: text/plainnn»); printf(«Hello, world!nn»); return 0; >

Строка Content-type: text/htmlnn — http-заголовок, задающий тип содержимого (mime-type). Удвоенный символ разрыва строки (nn) — обязателен, он отделяет заголовки от тела сообщения.

Все скрипты, как правило, помещают в каталог cgi (или cgi-bin) сервера, но это необязательно: скрипт может располагаться где угодно, но при этом большинство веб-серверов требуют специальной настройки. В веб-сервере Apache, например, такая настройка может производиться при помощи общего файла настроек httpd.conf или с помощью файла .htaccess в том каталоге, где содержится этот скрипт. Также скрипты должны иметь права на исполнение ( chmod +x hello.py ).

Все CGI-приложения имеют доступ к переменным окружения, устанавливаемым веб-сервером. Эти переменные играют важную роль при написании CGI-программ. В таблице перечислены некоторые из переменных, доступных CGI.

Пример вывода переменных окружения CGI-скрипта:

.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/2.environment.py :language: python :linenos:

/_static/5.web.server/cgi_env.png

  • Процесс CGI скрипта не зависит от Веб-сервера и, в случае падения, никак не отразится на работе последнего
  • Может быть написан на любом языке программирования
  • Поддерживается большинством Веб-серверов

Самым большим недостатком этой технологии являются повышенные требования к производительности веб-сервера. Дело в том, что каждое обращение к CGI-приложению вызывает порождение нового процесса, со всеми вытекающими отсюда накладными расходами. Если же приложение написано с ошибками, то возможна ситуация, когда оно, например, зациклится. Браузер прервет соединение по истечении тайм-аута, но на серверной стороне процесс будет продолжаться, пока администратор не снимет его принудительно.

  • FastCGI — дальнейшее развитие технологии CGI. Поддерживается многими Веб-серверами, например Nginx.
  • Веб-сервера, в которые уже встроена поддержка дополнительных стандартов и протоколов, таких как WSGI (Gunicorn, waitress, uwsgi)
  • Веб-сервер, функционал которого расширяется через модули, например, Apache (mod_wsgi, mod_php, mod_fastcgi)

.. seealso:: * https://docs.python.org/2/library/cgihttpserver.html * https://docs.python.org/3/library/http.server.html

Для запуска CGI сервера необходимо перейти в директорию sourcecode и выполнить команду:

python -m CGIHTTPServer 8000
python3 -m http.server —cgi 8000
.. literalinclude:: /../sourcecode/5.web.server/cgiserver.py :language: python :linenos:
python cgiserver.py

Теперь CGI-скрипты доступны на 8000 порту, например по адресу http://localhost:8000/cgi-bin/1.hello.py

  • Пример CGI скриптов на Python
  • Пример CGI скриптов на C++

Для компиляции кода на C++ необходимо установить библиотеку cgicc:

sudo apt-get install libcgicc5-dev
g++ -o 3.get.post.cgi 3.get.post.cpp -lcgicc

  • http://localhost:8000/cgi-bin/1.hello.cgi
  • http://localhost:8000/cgi-bin/1.hello.go.cgi
  • http://localhost:8000/cgi-bin/1.hello.py
  • http://localhost:8000/cgi-bin/1.hello.rb

.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/1.hello.py :language: python :linenos:
.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/1.hello.rb :language: ruby :linenos:

Для компиляции: make 1_hello

.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/1.hello.cpp :language: cpp :linenos:

Для компиляции: make 1_hello_go

.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/1.hello.go :language: go :linenos:

Вывод переменных окружения

  • http://localhost:8000/cgi-bin/2.environment.cgi
  • http://localhost:8000/cgi-bin/2.environment.py
  • http://localhost:8000/cgi-bin/2.environment.rb

.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/2.environment.py :language: python :linenos:
.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/2.environment.rb :language: ruby :linenos:

Читайте также:
Как запустить программу на 7 для xp

Для компиляции: make 2_environment

.. literalinclude:: /../sourcecode/5.web.server/cgi-bin/2.environment.cpp :language: cpp :linenos:

GET и POST запросы

  • http://localhost:8000/cgi-bin/3.get.post.cgi?first_name=Levlast_name=Tolstoy
  • http://localhost:8000/cgi-bin/3.get.post.rb?first_name=Levhttps://github.com/ustu/lectures.www/blob/master/docs/5.web.server/cgi.rst» target=»_blank»]github.com[/mask_link]

    Что такое cgi программа

    CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».

    Поскольку гипертекст статичен по своей природе, веб-страница не может непосредственно взаимодействовать с пользователем. До появления JavaScript , не было иной возможности отреагировать на действия пользователя, кроме как передать введенные им данные на веб-сервер для дальнейшей обработки. В случае CGI эта обработка осуществляется с помощью внешних программ и скриптов, обращение к которым выполняется через стандартизованный (см. RFC 3875: CGI Version 1.1) интерфейс — общий шлюз.

    Упрощенная модель, иллюстрирующая работу CGI:

    Сам интерфейс разработан таким образом, чтобы можно было использовать любой язык программирования, который может работать со стандартными устройствами ввода-вывода. Такими возможностями обладают даже скрипты для встроенных командных интерпретаторов операционных систем, поэтому в простых случаях могут использоваться даже командные скрипты.

    Как работает CGI?¶

    Обобщенный алгоритм работы через CGI можно представить в следующем виде:

    1. Клиент запрашивает CGI-приложение по его URI.
    2. Веб-сервер принимает запрос и устанавливает переменные окружения, через них приложению передаются данные и служебная информация.
    3. Веб-сервер перенаправляет запросы через стандартный поток ввода (stdin) на вход вызываемой программы.
    4. CGI-приложение выполняет все необходимые операции и формирует результаты в виде HTML.
    5. Сформированный гипертекст возвращается веб-серверу через стандартный поток вывода (stdout). Сообщения об ошибках передаются через stderr.
    6. Веб-сервер передает результаты запроса клиенту.

    Области применения CGI¶

    Это обеспечивается возможностью подключения CGI-скрипта к базе данных, а также возможностью обращаться к файловой системе сервера. Таким образом CGI-скрипт может сохранять информацию в таблицах БД или файлах и получать ее оттуда по запросу, чего нельзя сделать средствами HTML.

    CGI — это не язык программирования! Это простой протокол, позволяющий веб-серверу передавать данные через stdin и читать их из stdout. Поэтому в качестве CGI-обработчика может использоваться любая серверная программа, способная работать со стандартными потоками ввода-вывода.

    Примеры¶

    Пример на Python:

    #!/usr/bin/python print(«»»Content-Type: text/plain Hello, world!»»»)

    В этом коде строка #!/usr/bin/python указывает полный путь к интерпретатору Python.

    #include int main(void) printf(«Content-Type: text/plainnn»); printf(«Hello, world!nn»); return 0; >

    Строка Content-type: text/htmlnn — http-заголовок, задающий тип содержимого (mime-type). Удвоенный символ разрыва строки (nn) — обязателен, он отделяет заголовки от тела сообщения.

    Все скрипты, как правило, помещают в каталог cgi (или cgi-bin) сервера, но это необязательно: скрипт может располагаться где угодно, но при этом большинство веб-серверов требуют специальной настройки. В веб-сервере Apache, например, такая настройка может производиться при помощи общего файла настроек httpd.conf или с помощью файла .htaccess в том каталоге, где содержится этот скрипт. Также скрипты должны иметь права на исполнение ( chmod +x hello.py ).

    Переменные окружения¶

    Все CGI-приложения имеют доступ к переменным окружения, устанавливаемым веб-сервером. Эти переменные играют важную роль при написании CGI-программ. В таблице перечислены некоторые из переменных, доступных CGI.

    Пример вывода переменных окружения CGI-скрипта:

    1 2 3 4 5 6 7 8
    #!/usr/bin/python import os print(«Content-type: text/htmlrnrn») print(«Environment
    «) for param in os.environ.keys(): print(» %20s : %s
    » % (param, os.environ[param]))

    ../_images/cgi_env.png

    Преимущества CGI¶

    • Процесс CGI скрипта не зависит от Веб-сервера и, в случае падения, никак не отразится на работе последнего
    • Может быть написан на любом языке программирования
    • Поддерживается большинством Веб-серверов

    Недостатки CGI¶

    Самым большим недостатком этой технологии являются повышенные требования к производительности веб-сервера. Дело в том, что каждое обращение к CGI-приложению вызывает порождение нового процесса, со всеми вытекающими отсюда накладными расходами. Если же приложение написано с ошибками, то возможна ситуация, когда оно, например, зациклится. Браузер прервет соединение по истечении тайм-аута, но на серверной стороне процесс будет продолжаться, пока администратор не снимет его принудительно.

    Альтернативы¶

    • FastCGI — дальнейшее развитие технологии CGI. Поддерживается многими Веб-серверами, например Nginx.
    • Веб-сервера, в которые уже встроена поддержка дополнительных стандартов и протоколов, таких как WSGI (Gunicorn, waitress, uwsgi)
    • Веб-сервер, функционал которого расширяется через модули, например, Apache (mod_wsgi, mod_php, mod_fastcgi)

    Практика¶

    • https://docs.python.org/2/library/cgihttpserver.html
    • https://docs.python.org/3/library/http.server.html

    Для запуска CGI сервера необходимо перейти в директорию sourcecode и выполнить команду:

    python -m CGIHTTPServer 8000

    Источник: lectureswww.readthedocs.io

    CGI-скрипты: что это, способы создания

    CGI — это аббревиатура от слов Common Gateway Interface. Так называется небольшая программа, которая предлагает надежный способ взаимодействия веб-серверов в браузере, выполняя это способами, которые были невозможны с помощью HTML. Большинство скриптов CGI написаны на Perl. Это обычный язык программирования, который используется для создания сценариев на стороне сервера со стандартным текстовым файлом с расширением (.cgi).

    Основные условия работы программы

    Разработка CGI скриптов на Perl

    Вам будет интересно: Как пользоваться «Тим Спик 3»? Советы

    Прежде чем использовать символы CGI скриптов, пользователь должен проверить, поддерживает ли их веб-узел сайта, а также уточнить, если ли у разработчика полномочия на их применение. Некоторые хосты этого не допускают. Если разработчик сайта видит папку CGI-bin при загрузке HTML-файлов, ему разрешено использовать сценарии GCI.

    Одни хосты позволят запросить у них функцию CGI-bin, поскольку она не всегда предоставляется по умолчанию. Другие хосты могут протестировать и одобрить сценарии, прежде чем дать разрешение на использование CGI скриптов.

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

    Кроме того, понадобится программа FTP, которая поставляется с коммерческой версией Pro или бесплатной версией Lite. Любой вариант будет работать до тех пор, пока он загружается в режиме ASCII, чтобы помочь пользователю пройти через установку, так как создание CGI скриптов может занять много времени.

    Конфигурация и монтаж

    Вам будет интересно: Как пользоваться «Лаки патчером»: советы

    Конфигурация и монтаж

    Если у пользователя есть CGI-bin, то имеется хороший шанс для выполнения сценария CGI. Для правильной установки предварительно рекомендуется посмотреть страницу часто задаваемых вопросов веб-хоста, панель управления сайтом, документы поддержки или установочное сообщение. Одной из наиболее распространенных ошибок для веб-мастеров является установка скриптов CGI с неправильным путем.

    Если уже есть сценарий, открытый для использования, путь должен быть правильным, иначе сервер не будет работать. Пока открывается скрипт, проверяют обратную связь относительно любых переменных, которые требуют настройки и комментарии этой строки, начинающиеся с «#».

    Когда определен скрипт для сервера, можно приступать к загрузке. Обязательно выполняют это в режиме ASCII, поскольку простой CGI скрипт является текстовым файлом. Технически сценарии могут быть выполнены из любого каталога, но большинство хостов позволяет это выполнять только из CGI-бина. Важно также использовать правильное разрешение для файлов, использующих сценарий CGI.

    Разрешение для файлов

    Существует три типа доступа к данным с тремя разными разрешениями для каждой группы.

    Простой CGI скрипты

    Вам будет интересно: Три простых способа, как отключит уведомления в «Вайбере»

    Серверы UNIX позволят установить разные уровни доступа. Важно знать, какие разрешения имеет сценарий:

    Пример использования Application

    Пример использования Application

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

    Имеет легкий вес (с точки зрения использования памяти), что делает его подходящим для обычных сред CGI, и высокий выбор производительности в таких постоянных средах, как FastCGI или mod_perl.

    Добавляя PLUG-INS по мере роста потребностей, можно использовать сложные функции, когда они будут нужны, например, нужно написать приложение для поиска через базу данных виджетов. Скрипт экземпляра — это то, что фактически вызывается пользовательским веб-сервером. Это очень маленький простой файл, который просто создает экземпляр пользовательского приложения и вызывает унаследованный метод, run (). Ниже приведено полное описание «widgetview.cgi»:

    #!/usr/bin/perl -wuse WidgetView

    my $webapp = WidgetView->new()

    Как можно видеть, widgetview.cgi просто использует прикладной модуль, который реализует пакет Perl под названием WidgetView.pm.

    CGI Application заботится о внедрении методов new () и run (). При этом пользователь никогда не должен вызывать print () для отправки любого вывода в STDOUT. Вместо этого весь вывод возвращается, как скаляр.

    CGI — самый значительный вклад в управление состоянием приложения. Все, что необходимо для продвижения приложения вперед, это установить значение параметра формы HTML «rm» в значение «режима выполнения», которое нужно обработать отправкой формы. Это ключ к CGI Application.

    Методы сценариев

    Используя CGI Application, пользователь получает доступ к целому ряду встроенных методов. Ниже перечислены те, которые, вызываются из скрипта.

    Метод new () является конструктором для CGI. Он возвращает ссылку на пакет приложений (класс). Он может принимать набор параметров, как пары: ключ => значение.

    Метод new ()

    Этот метод может принимать некоторые конкретные параметры:

    Вам будет интересно: Как создать свою программу: обзор инструментов

    Run () вызывается на объект Application Module из скрипта. При вызове он выполняет функциональные возможности пользовательского прикладного модуля.

    Этот метод сначала определяет состояние приложения, просматривая значение параметра CGI, заданного параметром mode_param (). По умолчанию В «rm» для В «Run Mode», который будет содержать имя режима работы. Если это не указано, состояние по умолчанию равно значению start_mode ().

    Как только режим определен, run () просматривает таблицу отправки, хранящуюся в run_modes (), и находит указатель функции, который вводится из имени режима. Если найден, функция вызывается, а возвращаемые данные print () ‘ed отправляются в STDOUT и в браузер. Если указанный режим не найден, в таблице run_modes (), run () будет croak ().

    Поддержка PSGI

    Приложение предлагает встроенную поддержку PSGI. Объектом запроса по умолчанию для этого является:

    Самый простой способ — создать и вернуть PSGI — совместимый coderef. Нужно передать аргументы в hashref так же, как и к новому. Это возвращает PSGI-совместимый coderef, используя CGI . PSGI в качестве объекта запроса. Чтобы использовать другой объект запроса, создают собственный объект run_as_psgi(), как показано ниже:

    my $psgi_aref = $webapp->run_as_psgi

    Точно так же, как run, печать, не выводит и не возвращает структуру данных, требуемую спецификацией PSGI. Используют это, если нужно запустить приложение поверх обработчика, совместимого с PSGI, например, Plack. Конечный результат может выглядеть так:

    Поддержка PSGI

    Спецификация PSGI позволяет возвращать дескриптор файла или ссылку подпрограммы вместо байтовых строк. В режиме PSGI это поддерживается непосредственно CGI Application.

    Методы возможного переопределения

    CGI реализует некоторые методы, которые, как ожидается, будут переопределены путем их реализации в модуле подкласса. Эти методы заключаются в следующем:

    Метод возможного переопределения

    Метод setup () может вызывать любой из методов экземпляра пользовательского приложения. Эта функция является хорошим местом для определения свойств, специфичных для приложения, с помощью $ webapp-> param ().

    Метод setup () может быть реализован, как изображение ниже:

    Метод setup

    Однако часто все, что должно быть в setup (), определяет режимы запуска AutoRunmode, что позволяет сделать это с помощью простого синтаксиса, используя атрибуты режима запуска.

    Метод teardown (). Если он реализован, то вызывается автоматически после создания CGI скриптов и запуска приложения. Его можно использовать для очистки после операций. Типичное использование функции teardown () — отключить соединение с базой данных, которое было установлено в функции setup (). Также можно использовать метод teardown () для хранения информации о состоянии приложения на сервере: cgiapp_init ().

    Отправка чистых URI для запуска режимов

    Современные веб-фреймворки обходятся без ограничений в URI, обеспечивая вместо этого чистые URI:

    Чистым URI для описания одного и того же ресурса может быть:

    Процесс сопоставления этих URI для запуска режимов называется диспетчеризацией и обрабатывается CGI :: Application :: Dispatch. Дополнительный диспетчер не требуется.

    Можно работать над проектом CGI :: Application на рабочем столе или ноутбуке без установки полнофункционального веб-сервера, такого как Apache. Вместо этого устанавливают CGI :: Application :: Server из CPAN. После нескольких минут установки у пользователя будет собственный сервер приложений.

    Проводят автоматизированное тестирование. Test :: WWW :: Mechanize :: CGIApp позволяет выполнять функциональное тестирование проекта CGI :: App без запуска веб-сервера. Test :: WWW :: Mechanize можно использовать для проверки приложения через настоящий веб-сервер.

    Прямое тестирование также выполняется легко. CGI- приложение обычно печатает выходные данные своих режимов работы в STDOUT. Это можно подавить с помощью переменной среды CGI_APP_RETURN_ONLY. Приложение имеет подключаемую архитектуру, которая проста в использовании и в разработке новых плагинов.

    Пользовательский контент CGI

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

    PHP — это язык, специально предназначенный для реализации динамического содержимого на веб-серверах. Это делает разработку скриптов CGI в PHP намного проще, чем на других языках. Когда сервер начинает выполнение, он предоставляет всю необходимую ему контекстную информацию:

    Основной пример скрипта PHP

    Сценарий должен выполнить процесс, а затем выводить допустимый HTML-код, включая заголовки HTTP. Пример скрипта PHP:

    Основной пример скрипта PHP

    В этом скрипте первая и последняя строки являются HTML-кодом, а предложения PHP заключены в маркеры, затем получают скрипт из браузера, добавляя строку запроса из двух аргументов «data1» и «data2».

    Помимо глобальной переменной $ _SERVER в скрипте доступны следующие ассоциативные массивы запуска CGI скриптов:

    Учитывая, что разработчик получает запрос в nodejs и имеет объект запроса, называемый req, и объект ответа, называемый res, он должен использовать этот модуль, как представлено ниже:

    Объект запроса

    Таким образом запрос на /test.php будет отвечать модулю php для скриптов CGI. Функция paramsForRequest считывает объект запроса и устанавливает правильные переменные среды cgi для запроса. Это предоставляется, как отдельная функция, поэтому при необходимости можно добавлять дополнительные переменные запроса. Функция detectBinary в окнах ищет дополнительный модуль узла «php-bin-win32», который предоставляет переносимый php-файл. Этот код работает для deskshell и в том случае, если необходимо использовать его для каких-либо других целей и дополнительных функциях.

    Первая программа

    Вам будет интересно: Установить переводчик в «Яндекс.Браузер»: пошаговая инструкция, настройка, советы

    Чтобы написать простую программу CGI в Perl, придерживаясь традиции, используют фразу «привет мир». Здесь она представлена полностью. Сохраняют это в файл с именем «hello» в каталоге cgi-bin и запускают его, указав URL-адрес:localhost/cgi-bin/hello в браузере. Пользователь должен увидеть текст «Hello world» в браузере. Если нет, знакомятся с разделом boxout для отладки программ CGI, чтобы получить помощь в отслеживании проблемы.

    Это простая программа. Есть только несколько моментов, которые отличают разработку CGI скриптов на Perl от стандартной программы, запускающейся из командной строки. Первой из них является опция -T на линии shebang. Это переводит Perl в режим «taint».

    В этом режиме Perl автоматически будет игнорировать любые данные, поступающие от пользователя, и не позволит передавать эти данные в операционную систему до тех пор, пока они не будут очищены. В этом смысле taint-режим — хорошая идея.

    Второе отличие заключается в добавлении строки, которая печатает заголовок содержимого. Это будет первая проба пользователя с протоколом CGI.

    Все программы CGI должны выводить набор заголовков в браузер пользователя. В большинстве случаев единственным заголовком, который нужно будет вернуть, является контент. Это сообщает браузеру, какие данные программа отправляет. В этом примере возвращается простой текст, поэтому тип содержимого был «text/plain».

    Обычно возвращают HTML, поэтому тип контента будет «text / html». Нет причин, по которым программа не может вернуть более сложные данные, например PNG («image / png»). Набор заголовков должен быть отделен от фактических данных пустой строкой. Это достигается путем печати двух символов новой строки после финального заголовка CGI скриптов на сервере.Также обращают внимание, что программа записывает свой вывод в STDOUT.

    Веб-сервер будет организован для сбора любых данных, записанных в STDOUT, и для передачи их обратно в браузер. Предыдущий пример в действительности ничего не делал. Нет необходимости иметь программу CGI, которая отображает только фиксированный текст. Это можно было бы легко сделать с помощью HTML-страницы. Пользователь должен учиться на примере того, что имеет динамический выход. Например, сценарий, который печатает текущее время:

    Сценарий, который печатает текущее время

    Этот скрипт работает по тому же принципу, что и последний, но выдает системное время, используя функцию при разработке CGI скриптов на Perl — «localtime» и печатает это значение. Каждый раз, когда перезагружается скрипт, время будет обновляться. Еще раз этот скрипт выводит обычный текст. Требуется рассмотреть версию, которая возвращает HTML:

    Версия, которая возвращает HTML

    Эта программа выглядит несколько более сложной, но на самом деле она делает то же самое, что и в предыдущем примере. Добавленная сложность исходит исключительно из того факта, что должны отображать полную HTML-страницу.

    Если пользователь когда-либо просматривал настройки своего браузера, вероятно, видел флажки или переключатели для включения или отключения Javascript и Java, но никогда не видел их для CGI или PHP. Это потому, что Javascript и Java выполняются браузером (или нет, если пользователь отключит их). Браузер ничего не знает о CGI или PHP. Он просто получает чистый HTML-код после выполнения сценариев на сервере. Встроенный способ создания CGI скриптов — PHP, ColdFusion, ASP, в основном, используется разработчиками, создающим веб-страницы «front end», которые будут обращаться к базам данных «назад», например, клиент/серверные веб-приложения.

    Большим преимуществом метода CGI является то, что скрипты хранятся в файлах, поэтому есть буквально тысячи свободно доступных скриптов, уже написанных и готовых для загрузки и использования на веб-сайте. Это означает, что не нужно изучать язык сценариев, чтобы получить преимущества от скриптов, кто-то уже сделал эту работу за пользователя.

    Источник: abc-import.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru