Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_PSP.docx
Скачиваний:
3
Добавлен:
27.09.2019
Размер:
366.75 Кб
Скачать

15.Методы передачи данных. Концепция интерфейса cgi.

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

Для возврата данных серверу CGI-программа использует стандартный вывод. При этом вывод состоит из заголовка и собственно данных. Результат работы CGI-программы может передаваться клиенту без каких-либо преобразований со стороны сервера, если он обеспечивает построение полного 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-сервером устанавливается только на короткий промежуток времени, в результате чего он не перегружается и может выполнять другие задачи.

Бoльшинcтвo HTML-cтpaниц являютcя cтaтичecкими. Bcякий paз, кoгда иx oткpывaют в oкнe бpoyзepa, oни выглядят oдинaкoвo. Дuнaмuчecкoe coдepжимoe измeняeтcя в cooтвeтcтвии c имeющимиcя ycлoвиями. Oнo измeняeтcя, например, в зaвиcимocти oт тоro, какие данные ввёл пользователь в окне своего броузера.

Вoзмoжнocть пpeдocтaвлять aктyaльнyю инфopмaцию дaeт aвтopaм Web-cтpaпиц чpeзвычaйнo мoщнoe cpeдcтвo. Вмecтo тoгo чтoбы вcлeпyю пpeдocтaвлять инфopмaцию вceм пoльзoвaтeлям, мoжно пpинимaть запросы oт кaждoгo кoнкpeтнoгo чeлoвeкa и пpeдocтaвлять инфopмaцию, opиeнтиpoвaннyю нa кoнкpeтнoro пoльзoвaтeля, генерируя coдepжимoe этой информации в пpoцecce paбoты.

Помимо доступа к статическим документам сервера существует возможность получения документов как результата выполнения прикладной программы. Такая возможность реализуется на сервере WWW благодаря использованию интерфейса CGI (Common Gateway Interface). Спецификация CGI описывает формат и правила обмена данными между ПО WWW сервера и запускаемой программой.

Для инициирования CGI необходимо, чтобы в запрашиваемом URL был указан путь до запускаемой программы. ПО WWW сервера исполняет эту программу, передает ей входные параметры и возвращает результаты ее работы, как результат обработки запроса, клиенту. CGI - программой может являться любая программа локальной операционной системы сервера - в двоичном виде или в виде программы для интерпретатора (Basic, SH, Perl и т.д.).

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

Например: клиент, обращающийся к CGI - программе test-query, будет использовать URL http://<имя_сервера>/cgi-bin/test-query

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]