1 Учебный курс Введение в JavaScript и CGI Лекция 5 Основы CGI кандидат технических наук Павел Брониславович Храмцов paul@kiae.su.

Презентация:



Advertisements
Похожие презентации
CGI Common Gateway Interface.
Advertisements

1 Учебный курс Основы Web-технологий Лекция 6 CGI и Perl. SSI и Cookies кандидат технических наук Павел Брониславович Храмцов
Протокол HTTP.
Лекция 2 Программирование на стороне сервера: Протокол HTTP. CGI. Передача параметров серверу. Запоминание состояния. Меры безопасности. CGI и базы данных.
Web-узлы. Разработка и администрирование.. Часть 1. Web-технология.
Лекция Тема: «Средства создания серверного программного обеспечения» Преподаватель: Халелова Е.Н.
Программирование на стороне сервера.
1 Учебный курс Введение в JavaScript и CGI Лекция 3 Программирование форм и графики кандидат технических наук Павел Брониславович Храмцов
Лекция 11 Тема «Формы » Преподаватель: Халелова Е.Н.
1 Учебный курс Введение в JavaScript и CGI Лекция 1 Введение в JavaScript кандидат технических наук Павел Брониславович Храмцов
ПРОТОКОЛЫ HTTP. HTTP - HyperText Transfer Protocol Протокол уровня приложений Текущая версия HTTP/1.1.
1 Учебный курс Введение в HTML и CSS Лекция 1 История развития технологий Всемирной Сети и основные инструменты.
Скриптовые языки на примере Perl. Языки программирования Скриптовые Программа (или ее бай-код) интерпретируется Зачастую более высокий уровень абстрагирования.
Строки в Pascal
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.
Информатика ЕГЭ Уровень А5. Вариант 1 Определите значения переменных a, b, c после выполнения следующего фрагмента программы: a:=5; b:=1; a:=a+b; if a>10.
Для добавления текста щелкните мышью Структурированные типы данных. Множества 11 класс.
Разработка и использование интерактивных форм Общие положения. Общие положения. Современные браузеры позволяют пользователю, заполнив специальную форму,
«Программирование с использованием множеств» Delphi. Тема 8:
Транксрипт:

1 Учебный курс Введение в JavaScript и CGI Лекция 5 Основы CGI кандидат технических наук Павел Брониславович Храмцов

2 Обмен данными в рамках WWW Клиент (мультипротокольный) HTTP - Сервер HTML URL (URI) CSS JavaScript Java Plug-ins CGI SSI PHP ASP JSP API Perl Java FTP HTTP FTP - сервер

3 Темы занятия: Common Gateway Interface (CGI) Server Site Includes (SSI) Cookies

4 CGI Common Gateway Interface это спецификация обмена данными между прикладной программой, выполняемой по запросу пользователя, и HTTP-сервером, который данную программу запускает.

5 CGI и HTTP Методы доступа HTTP: Основные: GET и POST Дополнительные: HEAD и PUT Основные MIME-титы запросов CGI: application/x-www-form-urlencoded multipart/form-data

6 CGI и HTTP МетодКлиент --> СерверКлиент

7 Спецификация Common Gateway Interface В CGI имеет смысл выделить следующие основные моменты: понятие CGI-скрипта; типы запросов; механизмы приема данных скриптом; механизм генерации отклика скриптом.

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

9 Понятие CGI-скрипта Пример скрипта на языке Perl: #!d:/Perl/bin/perl.exe ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain; charset=iso \n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; }

10 Типы CGI запросов Запрос типа ISINDEX это запрос вида (метод GET): Запрос типа form-urlencoded это запрос вида (метод GET): Запрос типа multipart/form-data (метод POST) – в нем применяется составное тело HTTP-сообщения, которое представляет собой данные, введенные в форме, и данные присоединенного внешнего файла.

11 Механизмы приема данных скриптом Скрипт может принять данные от сервера тремя способами: через переменные окружения; через аргументы командной строки; через поток стандартного ввода.

12 Механизмы приема данных скриптом Переменные окружения Примеры: #Perl $a = $ENV{CONTENT_LENGTH};... // C a = getenv("CONTENT_LENGTH");

13 Механизмы приема данных скриптом Аргументы командной строки #Perl foreach $a { print $a,"\n"; } // C void main(argc,argv) int argc; char *argv[ ]; { int i; for(i=0;i

14 Механизмы приема данных скриптом Поток стандартного ввода int n; char *buf; n= atoi(getenv("CONTENT_LENGTH")); buf = (char *) malloc(n+1); memset(buf,'\000',n+1); for(i=0;i

15 Механизм генерации отклика скриптом Существует только один способ вернуть данные серверу и, соответственно, браузеру пользователя это писать в поток стандартного вывода (STDOUT). При этом скрипт должен формировать HTTP-сообщение.

16 Механизм генерации отклика скриптом Сначала формируем HTTP директивы заголовка HTTP сообщения: Content-type: text/html, либо Location: Потом через пустую строку формируем тело сообщения. Пример: #!/bin/sh echo Content-type: text/plain echo echo Hello

17 Примеры скриптов на Bash Структура скрипта: #!/usr/local/bin/bash echo Hello BASH Это еще не CGI-скрипт. Он не поддерживает правила спецификации CGI. #!/usr/local/bin/bash echo Content-type: text/plain echo echo Hello BASH Это уже CGI-скрипт. Поддерживает правила генерации отклика.

18 Примеры скриптов на Bash Стандартный поток вывода echo first_arg#$1 second_arg#$2 echo QUERY_STRING:$QUERY_STRING echo ' QUOTING ' echo ' '$QUERY_STRING' ' echo ' '`date`' ' echo ' '$(date)' '

19 Примеры скриптов на Bash Переменные окружения #!/usr/freeware/bin/bash echo Content-type: text/html echo echo ' ' echo ' переменные окружения ' echo ' ' echo ' Имя значение ' IFS='=' set | while read x y do echo ' '$x' '$y' ' done echo ' ' echo ' ' echo ' '

20 Примеры скриптов на Bash Переменные окружения (можно обратить к переменной окружения по имени): #!/usr/freeware/bin/bash echo Content-type: text/html echo echo ' ' echo ' QUERY_STRING ' echo QUERY_STRING = $QUERY_STRING echo ' '

21 Примеры скриптов на Bash Аргументы командной строки bash>ps -ax | grep httpd | wc -l ps задана с аргументом -ax; grep задана с аргументом httpd; wc задана с аргументом -l. argv.cgi?arg1+arg2+arg3 Есть переменная bash #. В данном случае ее значение ($#) равно 3

22 Примеры скриптов на Bash Стандартный поток ввода Для чтения данных из стандартного потока ввода в рамках программирования CGI-скриптов bash непригоден. Но чтение из стандартного потока ввода можно использовать: echo $QUERY_STRING | tr '+' ' ' | while read x do for y in $x do echo $y done

23 Немного о Bash Типы данных и переменные $1-$n аргументы командной строки скрипта; $0 имя скрипта; список аргументов командной строки; $# число аргументов командной строки; $IFS список разделителей; $PATH путь поиска команд. Управление потоком вычислений if list; then list; [elif list; then list;]...[ else list;] fi ps -axj | grep httpd | while read id pid do if test $id = "root"; then kill -1 $pid; fi done for var; in list; do list; done if test $REQUEST_METHOD = "POST"; …

24 CGI-скрипты и Perl Perl как язык разработки скриптов имеет ряд преимуществ. Перечислим их в порядке значимости: независимость от программно-аппаратной платформы; мощные средства разбора строк (регулярные выражения); простота работы с переменными окружения; простота работы со входными и выходными стандартными потоками; возможность чтения заданного числа символов из входного потока; хешированные таблицы (ассоциативные массивы); возможность организации конвейеров; библиотеки TCP/IP-обмена; множество стандартных библиотек прикладных программ.