Общешлюзовой интерфейс CGI
Оценка 4.7

Общешлюзовой интерфейс CGI

Оценка 4.7
ppt
11.05.2020
Общешлюзовой интерфейс CGI
123. Общешлюзовой интерфейс CGI.ppt

Общешлюзовой интерфейс CGI Common

Общешлюзовой интерфейс CGI Common

Общешлюзовой интерфейс CGI

Common Gateway Interface

Web-сервер Apache Common Gateway

Web-сервер Apache Common Gateway

Web-сервер
Apache

Common Gateway Interface

CGI-скрипт

данные

Тег для разметки формы элементы формы кнопка

Тег для разметки формы элементы формы кнопка

Тег для разметки формы

элементы формы кнопка Submit

action – определяет URL скрипта, которому передаются данные, внесенные в форму
method – определяет способ, которым данные передаются от клиента серверу (get – значение по умолчанию)

Методы передачи данных GET CGI-скрипт получает данные из формы через переменную окружения

Методы передачи данных GET CGI-скрипт получает данные из формы через переменную окружения

Методы передачи данных

GET CGI-скрипт получает данные из формы через переменную окружения QUERY_STRING
POST CGI-скрипт получает данные из формы через стандартный поток ввода

Переменные окружения environment variables

Переменные окружения environment variables

Переменные окружения environment variables

Основные
AUTH_TYPE содержит тип аутентификации, который применяется сервером
CONTENT_LENGTH количество байт данных, которое CGI-скрипт получает от браузера
CONTENT_TYPE media-тип данных запроса
GATEWAY_INTERFACE версия интерфейса CGI

Переменные окружения environment variables

Переменные окружения environment variables

Переменные окружения environment variables

PATH_INFO путь к виртуальному каталогу, в котором находится cgi-скрипт
PATH_TRANSLATED физический путь к каталогу, в котором находится cgi-скрипт
QUERY_STRING строка параметров, указанная в URL после знака ?
REMOTE_ADDR IP-адрес клиента

Переменные окружения environment variables

Переменные окружения environment variables

Переменные окружения environment variables

REMOTE_HOST DNS-имя клиента, если эта информация недоступна, то значение совпадает с REMOTE_ADDR
REQUEST_METHOD метод передачи данных, который используется клиентом
SCRIPT_NAME путь к виртуальному каталогу и имя cgi-скрипта


Переменные окружения environment variables

Переменные окружения environment variables

Переменные окружения environment variables

SERVER_NAME доменное имя или IP-адрес сервера
SERVER_PROTOCOL имя и версия протокола, используемого для выполнения запросов
SERVER_PORT номер порта браузера
SERVER_SOFTWARE имя и версия программного обеспечения сервера

Переменные окружения environment variables

Переменные окружения environment variables

Переменные окружения environment variables

Дополнительные
HTTP_ACCEPT media-типы данных, которые могут быть приняты клиентом
HTTP_ACCEPT_ENCODING методы кодирования, которые может использовать браузер для формирования запроса серверу
HTTP_ACCEPT_LANGUAGE идентификатор предпочтительного языка браузера

Переменные окружения environment variables

Переменные окружения environment variables

Переменные окружения environment variables

HTTP_COOKIE cookie, присылаемые браузером
HTTP_FROM имя пользователя в формате e-mail
HTTP_HOST DNS-имя хоста, на котором работает сервер
HTTP_REFERER имя документа, который инициирован работу cgi-скрипта
HTTP_USER_AGENT имя браузера

Проверка работы CGI Файл hellocgi

Проверка работы CGI Файл hellocgi

Проверка работы CGI

Файл hellocgi.cpp
#include void main () { cout<<"Content-type: text/html\n\n"; cout<<"Этот HTML-документ динамически создан CGI- модулем"; }

Проверка работы CGI Файл d:\infocom\Apache2

Проверка работы CGI Файл d:\infocom\Apache2

Проверка работы CGI

Файл d:\infocom\Apache2.2\cgi-bin\hellocgi.exe
ScriptAlias /cgi-bin/ "d:/infocom/Apache2.2/cgi-bin/"

Просмотр переменных окружения GET

Просмотр переменных окружения GET

Просмотр переменных окружения

GET Посмотреть переменные окружения

POST

Просмотр переменных окружения #include #include void main() { cout<<"Content-type: text/html\n\n"; cout<<"

Просмотр переменных окружения #include #include void main() { cout<<"Content-type: text/html\n\n"; cout<<"

Просмотр переменных окружения

#include #include void main() { cout<<"Content-type: text/html\n\n"; cout<<"

Environment Variables

"; cout<<"
REQUEST_METHOD="<QUERY_STRING="<"; }

Просмотр переменных окружения GET

Просмотр переменных окружения GET

Просмотр переменных окружения

GET Посмотреть переменные окружения

POST

Просмотр переменных окружения #include #include void main() { cout<<"Content-type: text/html\n\n"; cout<<"

Просмотр переменных окружения #include #include void main() { cout<<"Content-type: text/html\n\n"; cout<<"

Просмотр переменных окружения

#include #include void main() { cout<<"Content-type: text/html\n\n"; cout<<"

Environment Variables

"; cout<<"
REQUEST_METHOD="<CONTENT_LENGTH="<CONTENT_TYPE="<"; };

Заголовок Location Page1

Заголовок Location Page1

Заголовок Location

Page1
Page2

Заголовок Location #include #include void main () { char query_string[80]; query_string=getenv("QUERY_STRING"); if (strstr(query_string, "page1")!=NULL) cout<<"Location: http://localhost/page1

Заголовок Location #include #include void main () { char query_string[80]; query_string=getenv("QUERY_STRING"); if (strstr(query_string, "page1")!=NULL) cout<<"Location: http://localhost/page1

Заголовок Location

#include #include void main () { char query_string[80]; query_string=getenv("QUERY_STRING"); if (strstr(query_string, "page1")!=NULL) cout<<"Location: http://localhost/page1.htm\n\n"; if (strstr(query_string, "page2")!=NULL) cout<<"Location: http://localhost/page2.htm\n\n"; if ((strstr(query_string, "page1")==NULL) && (strstr(query_string, "page2")==NULL)) cout<<"Location: /error.htm\n\n"; }

Возврат графического файла Графический формат

Возврат графического файла Графический формат

Возврат графического файла

Графический формат XBM
Файл nil.xbm
#define nil_width 8 #define nil_height 12 static char nil_bits[] {0x00,0x3C,0x42,0x42, 0x42,0x42,0x42,0x42, 0x42,0x42,0x3C,0x00}

Возврат графического файла #include void main () { cout<<"Content-type: image/x-xbitmap\n\n"; cout<<"#define nil_width 8\n"; cout<<"#define nil_height 12\n"; cout<<"static char nil_bits[] {\n"; cout<<"0x00,0x3C,0x42,"; cout<<"0x42,0x42,0x42,"; cout<<"0x42,0x42,0x42,"; cout<<"0x42,0x3C,0x00}"; }

Возврат графического файла #include void main () { cout<<"Content-type: image/x-xbitmap\n\n"; cout<<"#define nil_width 8\n"; cout<<"#define nil_height 12\n"; cout<<"static char nil_bits[] {\n"; cout<<"0x00,0x3C,0x42,"; cout<<"0x42,0x42,0x42,"; cout<<"0x42,0x42,0x42,"; cout<<"0x42,0x3C,0x00}"; }

Возврат графического файла

#include void main () { cout<<"Content-type: image/x-xbitmap\n\n"; cout<<"#define nil_width 8\n"; cout<<"#define nil_height 12\n"; cout<<"static char nil_bits[] {\n"; cout<<"0x00,0x3C,0x42,"; cout<<"0x42,0x42,0x42,"; cout<<"0x42,0x42,0x42,"; cout<<"0x42,0x3C,0x00}"; }

Полный ответ сервера Файл nph-an2

Полный ответ сервера Файл nph-an2

Полный ответ сервера

Файл nph-an2.cpp #include void main () { cout<<"HTTP/1.1 200 OK\n"; cout<<"Content-type: text/html\n\n"; cout<<" This is a full answer!\n"; }

Установка cookie Файл nph-test

Установка cookie Файл nph-test

Установка cookie

Файл nph-test.cpp #include void main() { cout<<"HTTP/1.1 200 OK\n"; cout<<"Set-Cookie: Cook=hello; expires=Mon, 9-Apr-2008 00:00:00 GMT\n"; cout<<"Content-type: text/plain\n\n"; cout<<"Cookies have come!\n"; }

Полный ответ сервера Файл nph-an

Полный ответ сервера Файл nph-an

Полный ответ сервера

Файл nph-an.cpp #include void main () { cout<<"Content-type: text/html\n\n"; cout<<" This is full answer!\n"; }

Внутренняя ошибка сервера Файл nph-error

Внутренняя ошибка сервера Файл nph-error

Внутренняя ошибка сервера

Файл nph-error.cpp #include void main () { cout<<"HTTP/1.0 500 Server Error\n\n"; }

Аутентификация #include void main() { cout<<"HTTP/1

Аутентификация #include void main() { cout<<"HTTP/1

Аутентификация

#include void main() { cout<<"HTTP/1.1 401 Unauthorized\n"; cout<<"WWW-Authenticate: basic realm=TestRealm\n\n"; }

Перенаправление #include void main() { //cout<<"HTTP/1

Перенаправление #include void main() { //cout<<"HTTP/1

Перенаправление

#include void main() { //cout<<"HTTP/1.1 301 Moved Permanently\n"; cout<<"HTTP/1.1 302 Moved Temporary\n"; cout<<"Location: http://localhost/res.html\n\n"; }

Передача данных формы

Передача данных формы

Передача данных формы

Передача данных формы Новосибирск

Передача данных формы Новосибирск

Передача данных формы



Новосибирск Омск
Новосибирск Омск

Передача данных формы Города

Передача данных формы Города

Передача данных формы





Передача данных формы Москва

Передача данных формы Москва

Передача данных формы



Передача данных формы http://localhost/cgi-bin/viewenv

Передача данных формы http://localhost/cgi-bin/viewenv

Передача данных формы

http://localhost/cgi-bin/viewenv.exe? city1=Novosibirsk& city2=%CD%EE%E2%EE%F1%E8%E1%E8%F0%F1%EA& city3=%CD%EE%E2%EE%F1%E8%E1%E8%F0%F1%EA& city4=%CE%EC%F1%EA& password=12345& hidden=%D2%E0%E9%ED%E0& file=C%3A%5CWINDOWS%5C0.log& cities1=String1%0D%0AString2& cities2=%CD%EE%E2%EE%F1%E8%E1%E8%F0%F1%EA& cities3=%CC%EE%F1%EA%E2%E0& cities3=%C2%EB%E0%E4%E8%E2%EE%F1%F2%EE%EA& submit=%CF%EE%E4%E0%F7%E0+%E7%E0%EF%F0%EE%F1%E0

Передача данных формы Environment

Передача данных формы Environment

Передача данных формы

Environment Variables
QUERY_STRING=city1=Novosibirsk&city2=%CD%EE%E2%EE%F1%E8%E1%E8%F0%F1%EA&city3=%CD%EE%E2%EE%F1%E8%E1%E8%F0%F1%EA&city4=%CE%EC%F1%EA&password=12345&hidden=%D2%E0%E9%ED%E0&file=C%3A%5CWINDOWS%5C0.log&cities1=String1%0D%0AString2&cities2=%CD%EE%E2%EE%F1%E8%E1%E8%F0%F1%EA&cities3=%CC%EE%F1%EA%E2%E0&cities3=%C2%EB%E0%E4%E8%E2%EE%F1%F2%EE%EA&submit=%CF%EE%E4%E0%F7%E0+%E7%E0%EF%F0%EE%F1%E0

Четыре информационных потока CGI

Четыре информационных потока CGI

Четыре информационных потока CGI

Клиент

Web-сервер

CGI-модуль

HTTP запрос

HTTP ответ

Входной поток

Переменные
окружения

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

Выходной поток

Аргументы командной строки Ссылка

Аргументы командной строки Ссылка

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

Ссылка


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

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

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

Аргументы командной строки #include void main(int argc, char * argv[]) { cout<<"Content-type: text/html\n\n"; cout<<" argc="< "; for (int i=0; i "; }

Аргументы командной строки #include void main(int argc, char * argv[]) { cout<<"Content-type: text/html\n\n"; cout<<" argc="< "; for (int i=0; i "; }

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

#include void main(int argc, char * argv[]) { cout<<"Content-type: text/html\n\n"; cout<<"argc="<"; for (int i=0; i"; }

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

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

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

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