Змінні заголовка http-запиту

За винятком тих рядків з заголовка HTTP-запиту, які вже названі, сервер прилаштовує рядкам префікс HTTP_ і замінює знаки '-' на '_':

HTTP_ACCEPT - Даючи запит на сервер браузер звичайно розраховують отримати інформацію определеного формату, і для цього він в заголовку запиту вказує поле Accept:, Звідси скрипту надходить cписок тих MIME, які браузер готовий прийняти в якості відповіді від сервера.

HTTP_USER_AGENT - Браузер зазвичай посилає на сервер і інформацію про себе, щоб базуючись на знанні особливостей і недоліків конкретних браузерів CGI-скрипт міг видати інформацію з урахуванням цього. Наприклад, різні браузери можуть підтримувати або не підтримувати якісь HTML теги.

І інші всього їх близько 30.

CGI-скрипт отримує доступ до значень цих мінливих через функції операційної системи (в різних операційних системах це реалізується по різному), тим самим CGI-скрипт отримує вичерпну інформацію про HTTP-запиті. А тіло запиту (якщо воно звичайно є) надходить на STDIN (стандартний потік введення) скрипта. Розміром CONTENT_LENGTH байт.

Тема відповіді CGI програми

Тепреь обговоримо яким чином CGI-скрипт повинен посилати інформацію Web-сервера з точки зору CGI.

Якщо CGI-скрипт хоче послати щось у відповідь, то він повинен зробити це в такий спосіб. Всі дані, що виводяться повинні поміщатися в STDOUT скрипта. При цьому повинен бути обов'язково присутніми CGI-заголовок (CGI-Header). В CGI-заголовок можуть бути наступні поля:

Content-Type: - має бути обов'язково присутня, якщо є тіло відповіді. Визначає MIME-тип відповіді.

Location: - Повинно містити URL - ресурсу на який перенаправляється запит, як правило в цьому випадку більше нічого не вказується (т.к запит перенаправляється на інший сервер)

Status: - Містить код завершення роботи CGI-скрипта. Якщо не вказано то мається на увазі 200 Ok

Наприклад: Status: 404 Not found

Далі після CGI заголовка на STDOUT надсилається порожній рядок, яка відділяє заголовок від тіла відповіді. І після її надсилається власне тіло відповіді тип якого був вказаний в Content-Type (малюнок, текст HTML або інше).

Web-сервер отримавши через STDOUT інформацію, що надійшла від CGI-скрипта формує на базі її HTTP-відповідь який і посилається клієнтові (браузеру).

NPH - скрипти

Слід сказати що CGI-скрипт може сам без участі Web-сервера сформувати повністю HTTP-відповідь. Такі CGI-скрипти називаються - Non-Parsed-Headers. і як відмінність їх імена повинні починатися з префікса - "nph-" або для Windows - орієнтованих Web-серверів перша поміщається в STDOUT рядок повинна бути така "HTTP / 1.0". тобто версія протоколу HTTP, тоді сервер буде вважати що даний CGI-скрипт буде nph CGI - скриптом.

Передача параметрів CGI-скрипту

CGI-скрипту можна передавати параметри. Синтаксис цього такий: ?Param1Param2 = valueParam + 2b% 20% 5B% 5C% 5D% 5E. де. - означає що подальші дані розглядаються як параметри; - цим символом параметри відокремлюються одна від одної; % - після цього символу йде 16-й код символу, це необхідно тому-що не всі символи можна використовувати в командному рядку, а за допомогою% можна задати абсолютно будь-який символ; + - визначає пробіл (прогалини можна використовувати в явному вигляді в командному рядку); параметри могуг розбиватися на дві частини на ім'я і значення за допомогою знак рівності (для зручності). Параметри в залежності від методу HTTP-запиту передаються CGI-скрипту (при GET приєднуються до командного рядка, а при POST надходять як тіло запиту на STDIN скрипта). Використання параметрів більш детально буде описано, коли мова піде про HTML - формах.

Приклад CGI-скрипта (я написав приклад на мові Pascal тому думаю, що c мовою Pascal знайомі майже всі).

Відкомпілюйте дану програму (за допомогою компілятора для тієї операційної системи в якій вона буде працювати). Помістіть її в директорію / cgi-bin вашого сервера. І спробуйте запустити (з броузера вказавши її URL). Вона виведе вам вітання Hello World.

Застосування CGI скриптів

А зараз розглянемо деякі застосування CGI-скриптів.

Перш за все CGI використовується при обробці HTML - форм. Також для створення лічильників відвідувань, гостьових книг і чатів систем.

За допомогою CGI можна створювати анімацію

Насправді створювати анімацію на Web-сторінках можна десятками способів. Ми розглянемо як це можна зробити за допомогою CGI. Напишемо програму яка виводить послідовно кілька малюнків (за таким же принципом що і анімований Gif) для максимальної швидкості будемо використовувати nph-CGI - скрипт, і скористаємося багатосторінковим MIME c заміною предидущей сторінки. Малюнки повинні зберігатися з такими ж іменами як в масиві File даної прогамма.

Відкомпілюйте дану програму (за допомогою компілятора для тієї операційної системи в якій вона буде працювати). Помістіть її в директорію / cgi-bin вашого сервера. Потім в ваш HTML - документ додайте наступний тег -

зображення ISMAP

Розглянемо ще одне застосування CGI - це зображення ismap.Допустім в вашому HTML - документі є такий рядок:

Ну а як це використовувати залежить лише від вашої фантазії.

НОВИНИ ФОРУМУ
Лицарі теорії ефіру