CGI (від англ. Common Gateway Interface — «загальний інтерфейс шлюзу») — стандарт інтерфейсу, який використовується для організації взаємодії програми вебсервера із зовнішньою програмою. Програму, яка працює за таким інтерфейсом спільно з вебсервером, прийнято називати шлюзом. Також вживаються терміни «скрипт» (сценарій) або «CGI-програма».
Сам інтерфейс розроблений таким чином, щоб можна було використовувати будь-яку мову програмування. Для обміну даними використовуються стандартні інтерфейси вводу/виводу.
Всі скрипти, як правило, розміщують в каталог cgi-bin сервера, однак це не є обов'язковою умовою: скрипт може знаходитися де завгодно. Також може знадобитися налаштування вебсервера для роботи із програмою-шлюзом. В Apache, наприклад, таке налаштування може бути виконане у загальному файлі налаштувань httpd.conf або за допомогою файлу .htaccess в тому каталозі, де розміщено скрипт. Також Apache дозволяє запускати всі скрипти із розширенням .cgi.
CGI був одним з найпоширеніших засобів створення динамічних вебсторінок.
Призначення інтерфейсу CGI
Інтерфейс CGI виконує функції шлюзу між різними програмами, встановленими на web-сервері, і браузерами користувачів. Коли браузер запитує певний ресурс, web-сервер запускає програму, яка вже повертає результат в браузер користувача. Використання CGI-програм потрібно, коли необхідно в браузері користувача показати сторінку, сформовану на основі будь-яких дій користувача. Наприклад, коли користувачі вводять в форму будь-які дані, а на їх основі формується посилається вам сторінка. CGI-програма може також визначити IP-адресу вашого комп'ютера в мережі, і на основі його визначити вашу країну, в результаті передавши вам html документ вашою рідною мовою!
Механізм CGI перенаправляє висновок програми на web-сервер, а той, у свою чергу, в браузер користувача. З точки зору програми немає нічого незвичайного — вона лише виводить інформацію. Абсолютно будь-яка програма не може бути CGI-програмою, тому що перед своїм висновком вона повинна вивести певні заголовки сервера — вказати хоча б тип виведеної інформації. Наприклад, якщо користувач хоче вивести картинку, він повинен відправити заголовок Content-type: image / gif
. Якщо CGI-програмі потрібно передати параметри, то робиться це дуже просто — як і у випадку зі звичайною програмою. Наприклад, потрібно передати рядок запиту name=Taras&surname=Grygorovych сценарієм cgi.exe
. Для цього необхідно викликати програму cgi.exe з вказаною рядком запиту: cgi.exe name=Taras&surname=Grygorovych.
Розділяють параметри за допомогою символу &. PHP розбирає параметри рядка запиту самостійно.
Такий спосіб посилки параметрів сценарієм (коли дані містяться в командний рядок URL) називається методом GET. Фактично, навіть якщо не передається ніяких параметрів (наприклад, при завантаженні статичної сторінки), все одно застосовується метод GET. Однак, існує ще один поширений спосіб — передача параметрів запиту методом POST.
Якщо програма призначена для CGI, то потрібно подбати про взаємодію з сервером. Найпростіше взаємодія полягає в тому, що програміст повинен знати інформацію про сервер. Дана інформація передається за допомогою змінних оточення.
Способи створення CGI-програм
Наведемо приклад CGI-програми на C:
#include <time.h> // Потрібна для ініціалізації функції rand () #include <stdio.h> // Включаємо підтримку функцій введення / виводу #include <stdlib.h> // для підтримки функції rand () // Головна функція. Саме вона і запускається при старті сценарію. void main(void) { // ініціалізуємо генератор випадкових чисел int Num; time_t t; srand(time(&t)); // до Num записується випадкове число від 0 до 9 Num = rand()%10; // далі вводимо заголовки відповіді. Тип - html-документ printf("Content-type: text/html\n"); // заборона кешування printf("Pragma: no-cache\n"); // порожній заголовок printf("\n"); // виводимо текст документа - його ми побачимо в браузері printf("<html><body>"); printf("Випадкове число в діапазоні 0-9: %d",Num); printf("</body></html>"); }
Посилання
- (англ.)
Див. також
- FastCGI
- SCGI
- WSGI — «віскі», стандарт взаємодії між Python-програмою і вебсервером
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
CGI vid angl Common Gateway Interface zagalnij interfejs shlyuzu standart interfejsu yakij vikoristovuyetsya dlya organizaciyi vzayemodiyi programi vebservera iz zovnishnoyu programoyu Programu yaka pracyuye za takim interfejsom spilno z vebserverom prijnyato nazivati shlyuzom Takozh vzhivayutsya termini skript scenarij abo CGI programa Sam interfejs rozroblenij takim chinom shob mozhna bulo vikoristovuvati bud yaku movu programuvannya Dlya obminu danimi vikoristovuyutsya standartni interfejsi vvodu vivodu Vsi skripti yak pravilo rozmishuyut v katalog cgi bin servera odnak ce ne ye obov yazkovoyu umovoyu skript mozhe znahoditisya de zavgodno Takozh mozhe znadobitisya nalashtuvannya vebservera dlya roboti iz programoyu shlyuzom V Apache napriklad take nalashtuvannya mozhe buti vikonane u zagalnomu fajli nalashtuvan httpd conf abo za dopomogoyu fajlu htaccess v tomu katalozi de rozmisheno skript Takozh Apache dozvolyaye zapuskati vsi skripti iz rozshirennyam cgi CGI buv odnim z najposhirenishih zasobiv stvorennya dinamichnih vebstorinok Priznachennya interfejsu CGIInterfejs CGI vikonuye funkciyi shlyuzu mizh riznimi programami vstanovlenimi na web serveri i brauzerami koristuvachiv Koli brauzer zapituye pevnij resurs web server zapuskaye programu yaka vzhe povertaye rezultat v brauzer koristuvacha Vikoristannya CGI program potribno koli neobhidno v brauzeri koristuvacha pokazati storinku sformovanu na osnovi bud yakih dij koristuvacha Napriklad koli koristuvachi vvodyat v formu bud yaki dani a na yih osnovi formuyetsya posilayetsya vam storinka CGI programa mozhe takozh viznachiti IP adresu vashogo komp yutera v merezhi i na osnovi jogo viznachiti vashu krayinu v rezultati peredavshi vam html dokument vashoyu ridnoyu movoyu Mehanizm CGI perenapravlyaye visnovok programi na web server a toj u svoyu chergu v brauzer koristuvacha Z tochki zoru programi nemaye nichogo nezvichajnogo vona lishe vivodit informaciyu Absolyutno bud yaka programa ne mozhe buti CGI programoyu tomu sho pered svoyim visnovkom vona povinna vivesti pevni zagolovki servera vkazati hocha b tip vivedenoyi informaciyi Napriklad yaksho koristuvach hoche vivesti kartinku vin povinen vidpraviti zagolovok Content type image gif Yaksho CGI programi potribno peredati parametri to robitsya ce duzhe prosto yak i u vipadku zi zvichajnoyu programoyu Napriklad potribno peredati ryadok zapitu name Taras amp surname Grygorovych scenariyem cgi exe Dlya cogo neobhidno viklikati programu cgi exe z vkazanoyu ryadkom zapitu cgi exe name Taras amp surname Grygorovych Rozdilyayut parametri za dopomogoyu simvolu amp PHP rozbiraye parametri ryadka zapitu samostijno Takij sposib posilki parametriv scenariyem koli dani mistyatsya v komandnij ryadok URL nazivayetsya metodom GET Faktichno navit yaksho ne peredayetsya niyakih parametriv napriklad pri zavantazhenni statichnoyi storinki vse odno zastosovuyetsya metod GET Odnak isnuye she odin poshirenij sposib peredacha parametriv zapitu metodom POST Yaksho programa priznachena dlya CGI to potribno podbati pro vzayemodiyu z serverom Najprostishe vzayemodiya polyagaye v tomu sho programist povinen znati informaciyu pro server Dana informaciya peredayetsya za dopomogoyu zminnih otochennya Sposobi stvorennya CGI programNavedemo priklad CGI programi na C include lt time h gt Potribna dlya inicializaciyi funkciyi rand include lt stdio h gt Vklyuchayemo pidtrimku funkcij vvedennya vivodu include lt stdlib h gt dlya pidtrimki funkciyi rand Golovna funkciya Same vona i zapuskayetsya pri starti scenariyu void main void inicializuyemo generator vipadkovih chisel int Num time t t srand time amp t do Num zapisuyetsya vipadkove chislo vid 0 do 9 Num rand 10 dali vvodimo zagolovki vidpovidi Tip html dokument printf Content type text html n zaborona keshuvannya printf Pragma no cache n porozhnij zagolovok printf n vivodimo tekst dokumenta jogo mi pobachimo v brauzeri printf lt html gt lt body gt printf Vipadkove chislo v diapazoni 0 9 d Num printf lt body gt lt html gt Posilannya angl Div takozhFastCGI SCGI WSGI viski standart vzayemodiyi mizh Python programoyu i vebserverom