За винятком тих рядків з заголовка 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-скрипту можна передавати параметри. Синтаксис цього такий:
Приклад 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 - документі є такий рядок:
Ну а як це використовувати залежить лише від вашої фантазії.
НОВИНИ ФОРУМУ
Лицарі теорії ефіру