Слайд 2В CGI имеет смысл выделить следующие основные моменты:
понятие CGI-скрипта;
типы
запросов;
механизмы приема данных скриптом;
механизм генерации отклика скриптом.
Слайд 3Понятие CGI-скрипта
CGI-скриптом называют программу, написанную на любом языке программирования или командном языке,
которая осуществляет обмен данными с HTTP-сервером в соответствии со спецификацией Common Gateway Interface.
Слайд 4Типы запросов
Различают два типа запросов к CGI-скриптам: по методу GET и по
методу POST.
Слайд 5Метод GET
Подразделяется на запросы по типам кодирования: isindex и form-urlencoded
Запрос типа ISINDEX
— это запрос вида:
http://intuit.ru/somthig-cgi/
cgi-script?слово1+слово2+слово3
Слайд 6Запрос типа form-urlencoded — это запрос вида:
http://intuit.ru/somthig-cgi/
cgi-script?field=word1&field2=word2
Слайд 7Механизмы приема данных скриптом
Скрипт может принять данные от сервера тремя способами:
через
переменные окружения;
через аргументы командной строки;
через поток стандартного ввода.
Слайд 8Переменные окружения
В спецификации CGI определены 22 переменные окружения.
SERVER_SOFTWARE,
SERVER_NAME,
GATEWAY_INTERFACE
QUERY_STRING
CONTENT_TYPE
CONTENT_LENGTH и другие.
Слайд 9Аргументы командной строки
Аргументы командной строки появляются только в запросах типа ISINDEX.
Получить доступ
к содержанию командной строки скрипта можно с помощью тех же функций, что и при вызове его из-под интерактивной оболочки:
Слайд 10#Perl
foreach $a (@ARGV){
print $a,"\n"; }
// C
void main(argc,argv)
int argc;
char *argv[];
{
int i;
for(i=0;iprintf("%s\n",argv[i]);
}
}
Слайд 11Поток стандартного ввода
Ввод данных в скрипт через поток стандартного ввода осуществляется только
при использовании метода доступа к ресурсу (скрипту) POST.
Слайд 12Механизм генерации отклика скриптом
Скрипт осуществляет свой вывод в стандартный поток вывода. Этот
вывод может представлять собой или документ, сгенерированный скриптом, или инструкции серверу, где получить необходимый документ.
Слайд 13Примеры:
--- начало вывода ---
Content-type: text/html
--- конец вывода ---
--- начало вывода ---
Location: /path/doc.txt
---
конец вывода ---