Формат HTTP-відповіді.

Формат відповіді дуже схожий на формат запиту: він також має заголовок і тіло, розділене порожнім рядком. Заголовок також складається з основного рядка і рядків параметрів, але формат основного рядка відрізняється від такої в заголовку запиту. Основний рядок запиту складається з 3-х полів, розділених пропусками:

§ Версія протоколу - аналогічний відповідному параметру запиту.

§ Код помилки - кодове позначення "успішності" виконання запиту. Код 200 означає "все нормально" (OK).

§ Словесний опис помилки - "розшифровка" попередньої коду. Наприклад, для 200 це OK, для 500 - Internal Server Error.

Найбільш вживані параметри HTTP-відповіді:

§ Connection - аналогічний відповідному параметру запиту. Якщо сервер не підтримує Keep-Alive (є і такі), то значення Connection відповідає завжди close.

§ Content-Type ("тип вмісту") - містить позначення типа вмісту відповіді.

§ Залежно від значення Content-Type браузер сприймає відповідь як HTML-сторінку, картинку gif або jpeg, як файл, який треба зберегти на диску, або що-небудь ще і робить відповідні дії. Значення Content-Type для браузеру аналогічно значенню розширення файлу для Windows.

Деякі типи вмісту:

¨ text/html - текст у форматі HTML (веб-сторінка);

¨ text/plain - простий текст (аналогічний "блокнотовскому");

¨ image/jpeg - картинка у форматі JPEG;

¨ image/gif - те ж, у форматі GIF;

¨ application/octet-stream - потік "октетів" (тобто просто байт) для запису на диск.

§ Content-Length ("довжина вмісту") - довжина вмісту відповіді в байтах.

§ Last-Modified ("Модифікований востаннє") - дата останньої зміни документа.

Можливість пересилки через інтернет інформації всіх типів з'явилася революцією, але незабаром була виявлена і інша можливість. Якщо можна переслати через Web будь-який текст, то чому не можна переслати текст, створений програмою, а не узятий з готового файлу? При цьому відкривається море можливостей. Простий приклад: можна використовувати програму, що виводить поточний час, так, щоб читач бачив правильний час при кожному перегляді сторінки. Декілька розумних голів в National Center for Supercomputing Applications (Національний центр розробки застосувань для суперкомп'ютерів - NCSA), які створювали веб-сервер, таку можливість побачили, і незабаром з'явився CGI.

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

Якщо CGI дозволяє програмам посилати дані клієнтові, то форми розширюють цю можливість, дозволяючи клієнтові посилати дані для цієї CGI-програми. Поширені застосування CGI включають:

§ Динамічний HTML. Цілі сайти можуть генеруватися однією CGI-програмою.

§ Пошукові механізми, що знаходять документи із заданими користувачем словами.

§ Гостьові книги і дошки оголошень, в які користувачі можуть додавати свої повідомлення.

§ Бланки замовлень.

§ Анкети.

§ Витягання інформації з розміщеної на сервері бази даних.

Всі вони дають можливість з'єднання CGI з базою даних, що нас особливо цікавить.

Специфікація CGI

Отже, що в точності є «набором правил», що дозволяє CGI-програмі, скажімо, в Батавії, штату Ілінойс, обмінюватися даними з веб-броузером в Монголії? Офіційну специфікацію CGI разом з масою інших відомостей про CGI можна знайти на сервері NCSA за адресою http://hoohoo.ncsa.uiuc.edu/cgi/ .

Є чотири способи, якими CGI передає дані між CGI-програмою і веб-сервером-сервером, а отже, і клієнтом Web:

§ Змінні оточення.

§ Командний рядок.

§ Стандартний пристрій введення.

§ Стандартний пристрій виводу.

За допомогою цих чотирьох методів сервер пересилає всі дані, передані клієнтом, CGI-програмі. Потім CGI-програма робить свою чарівну справу і пересилає вихідні дані назад серверу, який переправляє їх клієнтові.

Ці дані наводяться з прикидкою на сервер HTTP Apache. Apache - найбільш поширений веб-сервер, що працює практично на будь-якій платформі, включаючи Windows 9х і Windows NT. Проте вони можуть бути застосовні до всіх HTTP-серверів, які підтримують CGI. Деякі патентовані сервери, наприклад, від Microsoft і Netscape, можуть мати додаткові функції або працювати трохи інакше. Оскільки обличчя Web продовжує змінюватися з неймовірною швидкістю, стандарти все ще розвиваються, і в майбутньому, поза сумнівом, стануться зміни. Проте, технологія CGI представляється сталою - розплачуватися за це доводиться тим, що інші технології, такі як аплети, її потіснили. Всі CGI-програми, які ви напишете, використовуючи ці відомості, майже напевно зможуть працювати ще довгі роки на більшості веб-серверів.

Коли CGI-програма викликається за допомогою форми - найбільш поширеного інтерфейсу, броузер передає серверу довгий рядок, на початку якого стоїть шлях до CGI-програмі і її ім'я. Потім слідують різні інші дані, які називаються інформацією шляху і передаються CGI-програмі через змінну оточення PATH_INFO (таблиця. 2-1). Після інформації шляху слідує символ «?», а за ним - дані форми, які посилаються серверу за допомогою методу HTTP GET. Ці дані стають доступними CGI-програмі через змінну оточення QUERY_STRING. Будь-які дані, які сторінка посилає з використанням методу HTTP POST, який використовується найчастіше, будуть передані CGI-програмі через стандартний пристрій введення. Типовий рядок, який може отримати сервер від броузера, показаний в таблиці. 3-1. Програма з ім'ям formread в каталозі cgi-bin викликається сервером з додатковою інформацією шляху extra/information і даними запиту choice=help - очевидно, як частина вихідного URL. Нарешті, дані самої форми (текст «CGI programming» в полі «keywords») пересилаються через метод HTTP POST.

Таблиця 2-1. Частини рядка, переданого броузером серверу

http://www.myserver.com/cgi-bin /formread /extra/information ?choice=help
  назва програми інформація про шлях рядок запиту

Змінні оточення

Коли сервер виконує CGI-программу, то перш за все передає їй деякі дані для роботи у вигляді змінних оточення. У специфікації офіційно визначені сімнадцять змінних, але неофіційно використовується значно більше - за допомогою описуємого нижче механізму, званого HTTP_mechanism. CGI-програма має доступ до цих змінних так само, як і до будь-яких змінних середовища командного процесора при запуску з командного рядка. У сценарії командного процесора, наприклад, до змінної оточення FOO можна звертатися як $FOO; у Perl це звернення виглядає, як $ENV{'FOO'}; у З - getenv("FOO"); і так далі. В таблиці 2-2 перераховані змінні, які завжди встановлюються сервером, - хоч би і в значення null. Окрім цих змінних дані, повертані клієнтом в заголовку запиту, привласнюються змінним вигляду HTTP_FOO, де FOO - ім'я заголовку. Наприклад, більшість веб-броузеров включають дані про версію в заголовок з ім'ям USER_AGENT . Ваша CGI-програма може отримати ці дані із змінної HTTP_USER_AGENT .

Таблиця 2-2. Змінні оточення CGI

Змінна оточення Опис
CONTENT LENGTH Довжина даних, переданих методами POST або PUT, в байтах
CONTENT_TYPE Тип MIME даних, приєднаних за допомогою методів POST або PUT.
GATEWAY_INTERFACE Номер версії специфікації CGI, підтримуємий сервером.
PATH_INFO Додаткова інформація шляху, передана клієнтом. Наприклад, для запиту http://www.myserver.com/test.cgi/this/is/a/ path?field=green значенням змінної РАth_info буде /this/is/a/path.
PATH_TRANSLATED Те ж, що PATH_INFO, але сервер проводить всю можливу трансляцію, наприклад, розширення імен типа «~account».
QUERY_STRING   Всі дані, наступні за символом «?» у URL. Це також дані, передавані, коли REQUEST_METOD форми є GEТ.
REMOTE_ADDR IP-адрес клієнта, що робить запит.
REMOTE_HOST Ім'я вузла машини клієнта, якщо воно доступне.
REMOTE_IDENT Якщо веб-сервер і клієнт підтримують ідентифікацію типа identd, то це ім'я користувача облікового запису, який робить запит.
REQUEST_METHOD Метод, використовуваний клієнтом для запиту. Для CGI-программ, які ми збираємося створювати, це зазвичай буде POST або GET.
SCRIPT_NAME   Шлях до виконуваного сценарію, вказаний клієнтом. Може використовуватися при посиланні URL на самого себе, і для того, щоб сценарії, посилання на яких існують в різних міс­цях, могли виконуватися по-різному залежно від місця.
SERVER_NAME   Ім'я вузла - або IP-адреса, якщо ім'я недоступне, машини, на якій виконується веб-сервер.
SERVER_PORT Номер порту, використовуваного веб-сервером.
SERVER_PROTOCOL   Протокол, використовуваний клієнтом для зв'язку з сервером. У нашому випадку цей протокол майже завжди HTTP.
SERVER_SOFTWARE Дані про версію веб-сервера, що виконує CGI-программу.

Наведемо приклад сценарію CGI на Perl, який виводить всі змінні оточення, встановлені сервером, а також всі успадковані змінні, встановлені командним процесором, що запустив сервер.








Дата добавления: 2016-04-02; просмотров: 771;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.