У вас вопросы?
У нас ответы:) SamZan.net

сервером. Спецификация была предложена для сервера NCS и является основным средством расширеня возможностей

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 8.4.2025

Спецификация Common Gateway Interface

Данная спецификация определяет стандартный способ обмена данными между прикладной программой и http-сервером. Спецификация была предложена для сервера NCSA и является основным средством расширеня возможностей обработки запросов клиентов http-сервером.

Основное назначение CGI - обработка данных из HTML-форм. В настоящее область применения CGI гораздо шире.

Понятие CGI-скрипта CGI-скриптом называют программу, написанную на любом языке программирования или командном языке, которая осуществляет обмен данными с http-сервером в соответствии со спецификацией Common Gateway Interface. Наиболее популярными языками для разработки скриптов являются Perl и С.

Типы запросов

Различают два типа запросов к CGI-скриптам: по методу GET и по методу POST. В свою очередь запросы по мотоду GET подразделяются на запросы типам кодирования: ISINDEX и FORM-URLENCODED, а запросы по методу POST - MULTIPART/FORM-DATA и FORM-URLENCODED.

В запросах по методу GET данные от клиента передаются скрипту в переменной окружения QUERY_STRING. В запросах по методу POST данные от скрипта передаются в потоке стандарного ввода скрипта. При передаче через поток стандарного ввода в переменной окружения CONTENT_LENGHT указывается число передаваемых символов.

Запрос типа ISINDEX - это запрос вида:

http://kuku.ru/somthig-cgi/cgi-script?слово1+слово2+слово3

Главным здесь является список слов после символа "?". Слова перечисляются через символ "+" и для кириллицы не кодируются в шестнадцатиричные последовательности. Последовательность слов после символа "?" будет размещена в переменной окружения QUERY_STRING.

Запрос типа FORM-URLENCODED - это запрос вида:

http://kuku.ru/somthig-cgi/cgi-script?filed=word1&field2=word2

Данные формы записываются в виде пар "имя_поля-значение", которые разделены символом "&".

Приведенный пример - это обращение к скрипту по методу GET. Все символы после "?" попадут в переменную окружения QUERY_STRING. При этом если в значениях полей появляется кирилица или специальные символы, то они заменяются шестнадцатиричным кодом символа, который следует за символом "%".

При обращении к скрипту по методу POST данные после символа "?" не будут размещаться в QUERY_STRING, а будут напрвалены в поток стандартного ввода скрипта. В этом случае количество сомволов в потоке стандартного ввода скрипта будет указано в переменной окружения CONTENT_LENGTH.

При запросе типа MULTIPART/FORM-DATA применяется составное тело HTTP-сообщения, которое представляет из себя данные введенные в форме и данные присоединенного внешнего файла. Это тело помещается в поток стандартного ввода скрипта. При этом кданным формы применяется кодирование как в FORM-URLENCODED, а данные внешнего файла передаются так как они есть.

Механизмы приема данных скриптом

Скрипт может принять данные от сервера тремя способами:

через переменные окружения

через аргументы командной строки

через поток стандартного ввода

При описании этих механизмов мы будем предполагать, что речь идет об обмене данными с сервером Apache для платформы Unix.

Переменные окружения При вызове скрипта сервер выполняет системные вызовы fork и exec. При этом он создает среду выполнения скрипта, определяя переменные этой среды. В спецификации CGI определено 22 переменные окружения. При обращении к скрипту разными методами и из различных контекстов реальные значения принемают разные совокупности этих переменных. Например, при обращении по методу POST переменная QUERY_STRING не имеет значения, а по методу GET такое значение имеет. Другой пример - переменная окружения HTTP_REFERER. При переходе по гипертекстовой ссылке она определена, а если перейти по значению поля location или через JavaScript-программу, то HTTP_REFERER не будет определен.

CGI

Common Gateway Interface - это спецификация интерфейса взаимодействия Web-сервера с внешними прикладными программами. Главное назначение CGI - обеспечение единообразного потока данных между сервером и работающим на нем приложением. CGI определяет:

порядок взаимодействия сервера с прикладной программой, в котором сервер выступает инициирующей стороной;

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

Обычно гипертекстовые документы, возвращаемые по запросу клиента WWW сервером, содержат статические данные. CGI обеспечивает средства создания динамических Web-страниц на основе данных, полученных от пользователя. Программы, написанные в соответствии со спецификацией CGI, называются CGI-скриптами или шлюзами. Шлюз - это CGI-скрипт, который используется для обмена данными с другими информационными ресурсами Internet или приложениями-демонами такими, как, например, система управления базами данных. Обычная CGI-программа запускается Web-сервером для выполнения некоторой работы, возвращает результаты серверу и завершает свое выполнение (рис. 1).

Рис. 1. Схема взаимодействия CGI-скрипта.

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

Рис.2. Схема взаимодействия CGI-шлюза.

Обмен данными по спецификации CGI реализуется обычно через переменные окружения и стандартный ввод/вывод. Выбор механизма передачи параметров определяется методом доступа, который указывается в форме в атрибуте METHOD. Если используется метод GET, то передача параметров происходит с помощью переменных окружения, которые сервер создает при запуске внешней программы. Через них передается приложению как служебная информация (версия программного обеспечения, доменное имя сервера и др.), так сами данные (в переменной QUERY_STRING). При методе POST для передачи используется стандартный ввод. А в переменных окружения фиксируется тип и длина передаваемой информации (CONTENT_TYPE и CONTENT_LENGTH).

Стандартный вывод используется скриптом для возврата данных серверу. При этом вывод состоит из заголовка и собственно данных. Результат работы скрипта может передаваться клиенту без каких-либо преобразований со стороны сервера, если скрипт обеспечивает построение полного HTTP-заголовка, в противном случае сервер модифицирует заголовок в соответствии со спецификацией HTTP. Обязательным для скриптов при генерировании документов "на лету", когда реального документа в файловой системе сервера не остается является только HTTP-заголовок Content-type, в котором указывается тип возвращаемого документа для правильной интерпретации браузером. Обычно в Content-type указывают текстовые типы text/plain и text/html. При использовании такого вида скриптов следует учитывать, что не все серверы и клиенты отрабатывают так, как представляется разработчику скрипта. Так, при указании Content-type: text/html, некоторые клиенты не реализуют сканирования полученного текста на предмет наличия в нем встроенной графики

При применение спецификаци CGI для обмена данными с внешними прикладными программами можно выделить следующие преимущества:

Прозрачность использования;

"Языковая" независимость - CGI-программы могут быть написаны на любом языке программирования или командном языке, имеющим средства работы со строками;

Процессная изолированность - при запуске CGI-програмы на сервере порождается отдельный процесс и ошибочный CGI-скрипт не может сломать Web-сервер или получить доступ к закрытой информации;

Открытость стандарта - CGI интерфейс применим на каждом Web-сервере;

Архитектурная независимость - CGI не зависит от особенностей реализации архитектуры сервера (однопоточности, многопоточности и т.д.);

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

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




1. тема управления запасами с неудовлетворенным спросом В большом универмаге планируется ввести систему упр
2. Стена Набат Ложь Бездна Красный смех то или иное философское настроение переживание чувство
3. Туризм для студентів які навчались в УжНУ ІІ семестр 20132014 н
4. Державний лад України в роки Другої світової війни
5. 17w X 1806h cm 11 Count 34
6. А можно ли прочитать о его жизни из его ежедневника Не знаю как у других а по моему ежедневнику ~ точно можн
7. МОБИЛЬНЫЕ ТЕЛЕСИСТЕМЫ ВЫСШАЯ ШКОЛА ЭКОНОМИКИ ФАКУЛЬТЕТ МЕНЕДЖМЕНТА МОСКВА 2012
8. Тема 10 Технология получения изделий из металлов
9. ТЕМАТИКЕ 2 СЕМЕСТР вариант 10 РАЗДЕЛ 1 ПРОИЗВОДНАЯ ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ.html
10. 41 мегапиксель Организатор Конкурса- OOO Телепорт групп