Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

Спецификация 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. Перевода нового мира
4. Доклад- ДИ Менделеев Доклад выполнил
5. религия Понятия
6. ИНТЕЛЛЕКТУАЛЬНАЯ СОБСТВЕННОСТЬ И ПРАВА НА НЕЕ Понятие интеллектуальной собственности Основ
7. ЛЕКЦИЯ 4 БИОТЕХНОЛОГИЯ ВИНОДЕЛИЯ Необходимое условие любого спиртового бродильного процесса наличие
8. Типы в базе данных я выбрал на ленте командную вкладку создание
9. Истории Великой Отечественной войны советского народа возглавляемая министром обороны СССР назначил
10. Росинка Занятие по экологии для детей подготовительной группы
11. Исследование планеты Марс с помощью космических аппаратов
12. Создание комфортных условий предусматривает обеспечение многих параметров среды обитания и характеристи.html
13. макетам используемым при издании книг
14. Апелляционное производство в системе пересмотра судебных актов Арбитражных судов
15. Дипломная работа- Червячная передача.html
16. Лабораторная работа 2 Программирование ветвящихся алгоритмов
17. Правовое регулирование иностранных инвестиций в России
18. реферат дисертації на здобуття наукового ступеня кандидата економічних наук Київ ~1
19. Оставляю за вами право редактировать свои появления дополнить удалить но так чтобы всё привело к концовке
20. тема кодирования которая заменяет объект или его название на условное обозначение код