Що таке загальний інтерфейс шлюзу (CGI)?


745

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

Я PHP-програміст із досвідом веб-розробки.

запит користувача (клієнта) для сторінки ---> веб-сервер (-> вбудований інтерпретатор PHP) ----> скрипт на стороні сервера (PHP) ---> сервер MySQL.

Тепер скажіть, що мій PHP-скрипт може отримати результати з MySQL-сервера та сервера MATLAB та якогось іншого сервера.

Отже, тепер PHP-скрипт - це CGI? Тому що його інтерфейс між веб-сервером та усіма іншими серверами? Не знаю. Іноді вони називають CGI, технологію та інше, коли вони називають CGI програмою чи іншим сервером.

  • Що саме таке CGI?

  • У чому велика справа /cgi-bin/*.cgi? Що з цим? Я не знаю, для чого цей cgi-binкаталог на сервері. Я не знаю, чому вони мають розширення * .cgi.

  • Чому Перл завжди заважає. CGI & Perl (мова). Я також не знаю, що з цими двома. Майже весь час чую ці двоє у поєднанні "CGI & Perl". Ця книга є ще одним чудовим прикладом програмування CGI за допомогою Perl . Чому б не "Програмування CGI за допомогою PHP / JSP / ASP"? Я ніколи не бачив таких речей.

  • Програмування CGI на C , мене дуже бентежить. " в С " ?? Серйозно ?? Я не знаю, що сказати. Я просто розгублений. " в С " ?? Це все змінює. Програму потрібно скласти та виконати. Це повністю змінює мій погляд на веб-програмування. Коли я компілюю? Як програма виконується (оскільки це буде машинний код, тому вона повинна виконуватись як самостійний процес). Як він спілкується з веб-сервером? IPC? і взаємодія з усіма серверами (на моєму прикладі MATLAB & MySQL) за допомогою програмування сокет? Я загубився!!

  • Люди кажуть, що CGI застаріла і більше не використовується. Невже це так? Яке останнє оновлення?

Одного разу я зіткнувся з ситуацією, коли мені довелося надати HTTP PUT запиту доступ до веб-сервера (Apache HTTPD). Його довга спина. Отже, наскільки я пам’ятаю це те, що я зробив:

  1. Відредагував файл конфігурації Apache HTTPD, щоб сказати веб-серверу передавати всі запити HTTP PUT деяким put.php(мені довелося написати цей скрипт PHP)

  2. Реалізуйте put.php для обробки запиту (збережіть файл у вказаному місці)

Люди сказали, що я написав сценарій CGI. Серйозно, я не мав поняття, про що вони говорять.

  • Я справді писав сценарій CGI?

Я сподіваюся, ви зрозуміли, в чому моя плутанина. (Тому що я сам не знаю, де я плутаюся). Я прошу вас, хлопці, зберігати свою відповідь якомога простіше. Я справді не можу зрозуміти жодної фантазійної технічної термінології. Принаймні, не в цьому випадку.

Редагувати:

Я знайшов цей дивовижний підручник "Програмування CGI просто!" - Підручник з CGI , який пояснює поняття найпростішим можливим способом. Прочитавши цю статтю, ви можете прочитати Початок роботи з програмуванням CGI в C, щоб доповнити своє розуміння фактичними зразками коду. Я також додав ці посилання до цього підручника до статті Вікіпедії: http://en.wikipedia.org/wiki/Common_Gateway_Interface


9
Я вже бачив CGI, написаний у Коболі. Немає діточок!
Люк М

@Luc M. Цікавить. Який CGI ви маєте на увазі (враховуючи, що в LINQ існує райцистер?)?
Джо

15
@claws: Люди, в основному старі школи, називатимуть будь-який код незалежно від реального способу виконання, виконаного через веб-сервер, CGI. Те, що ви насправді написали, це сценарій PHP, який може бути, а може і не бути виконаний через протокол CGI. Здається, ваша плутанина випливає з амбівалентного значення CGI, протоколу для виконання коду та коду, який виконується за допомогою протоколу (який згодом узагальнений для позначення будь-якого веб-коду, виконаного кодом)
Вінко Врсалович

1
Ще в середині 90-х я написав кілька сценаріїв CGI в HyperCard
Ніл Девіс,

@Joe Я ніколи не отримував сповіщення, і сьогодні, читаючи знову цю публікацію, я побачив ваше запитання. CGI були написані на OpenVMS як незалежні виконувані файли (без будь-яких фреймворків та сторонніх додатків ...)
Люк М

Відповіді:


427

CGI - це інтерфейс, який розповідає веб-серверу, як передавати дані до програми та з неї. Більш конкретно, він описує, як передається інформація про запит у змінні середовища (наприклад, тип запиту, віддалена IP-адреса), як передається тіло запиту за допомогою стандартного вводу та як передається відповідь за допомогою стандартного виводу. Ви можете ознайомитися зі специфікацією CGI для отримання детальної інформації.

Щоб використовувати ваше зображення:

user (client) request for page ---> webserver ---[CGI]----> Server side Program ---> MySQL Server.

Більшість, якщо не всі, веб-сервери можуть бути налаштовані на виконання програми як "CGI". Це означає, що веб-сервер, отримавши запит, передасть дані певній програмі, встановивши деякі змінні середовища та параметри параметри через стандартний вхід і стандартний вихід, щоб програма могла знати, де і на що звернути увагу.

Основна перевага полягає в тому, що ви можете запускати будь-який виконуваний код з Інтернету, враховуючи, що і веб-сервер, і програма знають, як працює CGI. Ось чому ви можете писати веб-програми на C або Bash за допомогою звичайного веб-сервера з підтримкою CGI. Це і те, що більшість програмних середовищ можуть легко використовувати стандартні вхідні, стандартні вихідні та змінні середовища.

У вашому випадку ви, швидше за все, використовували інший, специфічний для PHP, засіб зв’язку між вашими сценаріями та веб-сервером. Це, як ви добре зазначаєте у своєму запитанні, є вбудованим інтерпретатором під назвою mod_php.

Отже, відповідаючи на ваші запитання:

Що саме таке CGI?

Дивись вище.

Яка велика справа з /cgi-bin/*.cgi? Що з цим? Я не знаю, для чого це каталог cgi-bin на сервері. Я не знаю, чому вони мають розширення * .cgi.

Це традиційне місце для програм cgi, багато веб-серверів приходять з цим каталогом, попередньо налаштованим для виконання всіх бінарних файлів там як програм CGI. Розширення .cgi позначає виконуваний файл, який, як очікується, буде працювати через CGI.

Чому Перл завжди заважає. CGI & Perl (мова). Я також не знаю, що з цими двома. Майже весь час чую ці двоє у поєднанні "CGI & Perl". Ця книга є ще одним чудовим прикладом програмування CGI з Perl Чому б не "Програмування CGI за допомогою PHP / JSP / ASP". Я ніколи не бачив таких речей.

Оскільки Perl є давнім (старіші за PHP, JSP і ASP, які все виникли, коли CGI був уже старий, Perl існував, коли CGI був новим) і став досить відомим тим, що був дуже хорошою мовою для обслуговування динамічних веб-сторінок через CGI. В даний час існують інші альтернативи запуску Perl на веб-сервері, в основному mod_perl .

Програмування CGI в C це мене дуже бентежить. в С ?? Серйозно ?? Я не знаю, що сказати. Я "просто заплутався". В С "Це все змінює. Програму потрібно скомпілювати та виконати. Це повністю змінює моє уявлення про веб-програмування. Коли я компілюю? Як програма виконується (тому що це буде машинний код, тому він повинен виконуватись як самостійний процес). Як він спілкується з веб-сервером? IPC? та взаємодіє з усіма серверами (у моєму прикладі MATLAB & MySQL) за допомогою програмування сокет?

Ви збираєте виконуваний файл один раз, веб-сервер виконує програму і передає дані в запиті програмі та виводить отриману відповідь. CGI вказує, що один екземпляр програми буде запущений для кожного запиту. Ось чому CGI є неефективним і на сьогоднішній день застарілим.

Кажуть, що CGI застаріла. Його більше не використовують. Це так? Яке останнє оновлення?

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


24
Більш конкретно, він описує, як передається інформація про запит у змінних середовища (наприклад, тип запиту, віддалена IP-адреса), як передається тіло reqeust за допомогою стандартного введення та як передається відповідь за допомогою стандартного виводу. Для отримання детальної інформації можна звернутися до специфікації CGI ( hoohoo.ncsa.illinois.edu/cgi ).
daf

3
Припустимо, що Server side Programу вашій фігурі мій сценарій PHP. Отже, я ніколи не робив програм CGI? Тому що я ніколи не писав нічого, що трапляється між веб-сервером та моїм PHP-скриптом. Чорт !! це вбиває мене.
кігті

4
PHP все ще сильно базується на протоколі CGI, більша частина вмісту $ _SERVER безпосередньо від специфікації CGI. І "програмування CGI" завжди означало програму, що обробляє запит, а не реалізацію самого протоколу. Якщо ви пояснили, що ви робите з PHP піонеру веб-програмування епохи 1993 року, він вважав би це вдосконаленою (хоча можливо, примхливою) формою програмування CGI.
Майкл Боргвардт

5
@Michael: Але при запуску через mod_php це зовсім не CGI (навіть якщо на його основі). І я погоджуюся, що CGI посилається як на протокол, так і на сценарії, виконані через нього.
Вінко Врсалович

2
@Vinko Vrsalovic: якщо CGI - це інтерфейс для виконання Perl, C або інших мов для веб-сервера, ніж який інтерфейс використовується PHP для запуску в Apache ???????? і PHP підпадає під CGI специфікації ??
hardik

63

Що саме таке CGI?

Засіб для веб-сервера отримувати свої дані з програми (замість, наприклад, файлу).

Яка велика справа з /cgi-bin/*.cgi?

Немає нічого. Це просто умовність.

Я не знаю, для чого це каталог cgi-bin на сервері. Я не знаю, чому вони мають розширення * .cgi.

Сервер повинен знати, що робити з файлом (тобто трактувати його як програму, яку потрібно виконувати замість чогось просто обслуговувати). Маючи розширення .html, він дозволяє використовувати тип вмісту text / html. Маючи розширення .cgi, це запускає його як програму.

Зберігання виконуваних файлів в окремому каталозі забезпечує деякий додатковий захист від виконання невірних файлів та / або подання програм CGI як вихідних даних у випадку, якщо сервер не налаштований.

Чому Перл завжди заважає.

Це не так. Perl був просто великим і популярним одночасно з CGI.

Я не користувався Perl CGI роками. Я використовував mod_perl протягом тривалого часу, і прагну до PSGI / Plack з FastCGI в наші дні.

Ця книга є ще одним чудовим прикладом програмування CGI з Perl Чому б не "Програмування CGI за допомогою PHP / JSP / ASP".

CGI не дуже ефективний. Кращі методи розмови з програмами від веб-серверів з'явилися приблизно в той же час, що і PHP. JSP і ASP - це різні методи розмови з програмами.

Програмування CGI в C це мене дуже бентежить. в С ?? Серйозно ??

Це мова програмування, чому ні?

Коли я компілюю?

  1. Написати код
  2. Складіть
  3. URL доступу
  4. Веб-сервер запускає програму

Як програма виконується (оскільки це буде машинний код, тому вона повинна виконуватись як самостійний процес).

Він не повинен виконуватись як самостійний процес (ви можете записувати модулі Apache в C), але вся концепція CGI полягає в тому, що він запускає зовнішній процес.

Як він спілкується з веб-сервером? IPC?

Змінні STDIN / STDOUT та середовища - як визначено у специфікації CGI.

і взаємодія з усіма серверами (на моєму прикладі MATLAB & MySQL) за допомогою програмування сокет?

Використовуючи будь-які методи, які вам подобаються та підтримуються.

Кажуть, CGI знецінився. Його більше не використовують. Це так?

CGI неефективний, повільний і простий. Він використовується рідко, коли він використовується, це тому, що він простий. Якщо продуктивність не є великою справою, то простота коштує багато.

Яке останнє оновлення?

1.1


1. Написати код 2. Компілювати 3. Доступ URL 4. Веб-сервер запускає програму. || Але як веб-сервер знає, де ви розміщуєте скомпільовану виконувану програму? Звідки відомо, яку виконувану програму (серед них усіх) запустити?
Pacerier

@Pacerier - Той самий спосіб, коли він знає, який статичний файл надіслати клієнту, якщо запитується статичний файл.
Квентін

41

CGI - це специфікація інтерфейсу між веб-сервером (HTTP-сервером) та виконуваною програмою певного типу, яка обробляє певний запит.

Він описує, як певні властивості цього запиту повинні передаватися оточенню цієї програми та як програма повинна передавати відповідь серверу і як сервер повинен «завершити» відповідь, щоб сформувати дійсну відповідь на вихідний запит HTTP.

Деякий час CGI був проектом Internet IETF і, як такий, був термін придатності. Термін дії закінчився без оновлення, тому не було «стандарту» CGI. Зараз це інформаційний RFC, але як такий документ є звичайною практикою і не є самим стандартом. rfc3875.txt , rfc3875.html

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

Мови компіляції, такі як C, зазвичай використовувалися, як і мови сценаріїв, такі як perl, часто використовуючи бібліотеки, щоб полегшити доступ до середовища CGI.

Одним з великих недоліків CGI є те, що для кожної запиту створюється нова програма, тому підтримка стану між запитами може стати головним питанням ефективності. Стан може оброблятися файлами cookie або кодуватись у URL-адресі, але якщо він набуває великого розміру, він повинен зберігатися в іншому місці та вводитися з кодованої інформації URL-адреси чи файлу cookie. Кожен виклик CGI повинен буде десь перезавантажити збережений стан із магазину.

З цієї причини і для дуже простого інтерфейсу до запитів і сеансів кращі інтегровані середовища між веб-серверами та програмами набагато популярніші. Середовища, такі як сучасна реалізація php, з apache набагато краще інтегрують цільову мову з веб-сервером та надають доступ до об'єктів запитів та сеансів, необхідних для ефективного обслуговування запитів http. Вони пропонують набагато простіший і багатший спосіб написання «програм» для обробки HTTP-запитів.

Чи ви написали сценарій CGI, швидше залежить від інтерпретації. Це, звичайно, зробили роботу одного, але набагато звичніше запускати php як модуль, де інтерфейс між сценарієм та сервером не є строго інтерфейсом CGI.


1
Набридати. Я почав писати це, коли інших відповідей не було, але мені зателефонували. Зараз мова йде про №8 у списку. Я не маю бажання видаляти його зараз, я повернуся та видаляю пізніше.
CB Bailey

6
Гей .. Будь ласка, не видаляйте його. Це говорить про більш чіткі речі. Я вважаю це корисним. Можливо, деякі інші можуть також вважати це таким. :)
кігті

1
Гаразд, я залишу це трохи. Напевно, було б добре, якби хтось інтегрував будь-які «кращі» уривки в один з більш повних відповідей. Тоді ми, можливо, отримаємо більш остаточну відповідь.
CB Bailey

18

CGI вказаний в RFC 3875 , хоча це є пізнішою "офіційною" кодифікацією оригінального документа NCSA . В основному, CGI визначає протокол для передачі даних про HTTP-запит від веб-сервера до програми для обробки - будь-якої програми, будь-якою мовою. На той момент, коли пишеться специфікація (1993 р.), Більшість веб-серверів містили лише статичні сторінки, "веб-додатки" були рідкісною і новою річчю, тому здавалося природним відсторонити їх від "нормального" статичного вмісту, наприклад у cgi-binкаталог, окрім статичного вмісту та їх закінчення .cgi.

У цей час тут також не було виділених "мов веб-програмування", таких як PHP, і C була домінуючою портативною мовою програмування - так багато людей написали свої CGI-скрипти в C. Але Перл швидко виявився, що краще підходить для такого роду річ, і CGI на деякий час стала майже синонімом Perl. Потім з'явилися Java Servlets, PHP та ще купа інших, які взяли на себе значну частину частки ринку Perl.


Чому PHP є "спеціальною мовою веб-програмування"? PHP - це загальна мова, і люди також користуються нею для додатків інтерфейсу.
Pacerier

@Pacerier: він був розроблений як мова програмування для створення веб-сторінок, і саме для цього використовують 99,9% його користувачів. Це навіть у його назві . Стверджувати що-небудь інше - це просто безглуздо роздвоєння волосся. Якщо ви використовуєте його для програм інтерфейсу, наукових обчислень або вбудованого програмування, добре, будьте щасливі, ніхто не говорить, що вам це не дозволено.
Майкл Боргвардт

13

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

CGI - це просто спосіб спілкування веб-сервера та програми, нічого більше, нічого менше. Тут сервер управляє мережевим підключенням і протоколом HTTP, а програма обробляє вхід і генерує вихід, який надсилається в браузер. Сценарій CGI може бути в основному будь-якою програмою, яка може бути виконана веб-сервером і дотримуватися протоколу CGI. Таким чином, програма CGI може бути реалізована, наприклад, в C. Однак це вкрай рідко, оскільки C не дуже добре підходить для виконання завдання.

/cgi-bin/*.cgiце просто шлях, де люди зазвичай ставлять свій CGI-скрипт. Веб-сервер зазвичай налаштовано за замовчуванням для отримання CGI-скриптів із цього шляху.

сценарій CGI може бути реалізований і в PHP, але всі програми PHP не є сценаріями CGI. Якщо веб-сервер вбудував інтерпретатор PHP (наприклад, mod_php в Apache), то етап CGI пропускається шляхом більш ефективного прямого протоколу між веб-сервером і інтерпретатором.

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


12

CGI по суті передає запит будь-якому інтерпретатору, налаштованому за допомогою веб-сервера - це може бути Perl, Python, PHP, Ruby, C майже все. Perl був найпоширенішим у той час, тому ви часто бачите це посиланням на CGI.

CGI не мертвий. Насправді більшість великих хостинг-компаній використовують PHP як CGI на відміну від mod_php, оскільки він пропонує конфігурацію рівня користувача та деякі інші речі, в той час як він повільніше, ніж mod_php. Ruby і Python зазвичай виконуються як CGI. Ключова відмінність тут полягає в тому, що серверний модуль працює як частина фактичного серверного програмного забезпечення - де, як і у CGI, він знаходиться повністю поза сервером. Сервер просто використовує модуль CGI, щоб визначити, як передавати та отримувати дані зовнішньому інтерпретатору.


2
Не зводячи до уваги, але більшість установок python в Інтернеті я бачив, де на mod_wsgi або mod_python.
ChristopheD

Саме так більшість людей використовують термін CGI скрипт, але це не зовсім те, що означає цей термін.
reinierpost

Ви говорите, що інтерпретатор, але C рідко інтерпретується, і для CGI можуть використовуватися такі програми, як C, складені на C.
користувач34660

11

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

Оскільки сценарії CGI потребують виконання дозволів, httpd за замовчуванням дозволяє лише програми CGI в cgi-bin каталозі запускатися для (можливо, зараз неправильно) цілей безпеки.

Більшість скриптів PHP виконується в процесі веб-сервера через mod_php . Це не CGI.

CGI повільний, оскільки програма (та пов'язаний з нею перекладач) повинен бути запущений за запитом. Сучасні альтернативи - це вбудоване виконання, використовуване mod_php, і тривалі процеси, що використовуються FastCGI. Дана мова може мати свій спосіб реалізації цих механізмів, тому обов'язково поцікавтеся, перш ніж вдаватися до CGI.


@Ignacio Vazquez-Abrams: якщо інтерфейс CGI створює новий Процес, кожен раз, коли він отримує запит на ресурс CGI, ніж різниця у виконанні між CGI та mod_php ??????? це CGI і mod_php - це те саме ???? чи можна писати PHP-скрипти, які працюють під інтерфейсом CGI, а не під mod_php ???
hardik

@Hardik: mod_php працює як частина HTTPd, яка відповідає за власні процеси.
Ігнасіо Васкес-Абрамс

що це за "зовнішня програма"? це інтерпретатор, якщо я запускаю php з php-fpm?
slier

@slier: Це довільна програма, яка не є веб-сервером.
Ігнасіо Васкес-Абрамс

@ IgnacioVazquez-Abrams так чи можна впевнено припустити, що це interpreterif, якщо вони працюють php з php-fpm?
slier

7

Можливо, ви хочете знати, що не є CGI, а відповідь - МОДУЛЬ для вашого веб-сервера (якщо я вважаю, що ви запущено Apache). І це велика різниця, тому що CGI потребує і зовнішня програма, нитка, як би інстанціювати сервер додатків PERL, PHP, C, де при запуску як МОДУЛІ ця програма - це веб-сервер (апаш).

Через все це існує багато питань щодо продуктивності, безпеки, портативності. Але добре знати, що це не CGI спочатку, щоб зрозуміти, що це таке.


7

Приклад із реального життя: складна база даних, яку потрібно показати на веб-сайті. Оскільки база даних була розроблена десь близько 1986 року (!), Багато даних було запаковано різними способами, щоб заощадити на диску.

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

Є три розумні рішення:

  1. швидко і брудно: надішліть несогласовані дані до PHP, відсортуйте їх там. Очевидно, що це дуже дороге рішення, тому що це повторюватиметься кожного разу при переході сторінки
  2. написати плагін в двигун бази даних - але адміністратор не був готовий дозволити запуску іноземного коду на своєму сервері, або
  3. ви можете обробити дані в програмі (C, Perl тощо) та вивести HTML. Сама програма переходить у / cgi-bin і викликається веб-сервером (наприклад, Apache) безпосередньо, а не через PHP.

CGI запускає ваш сценарій у Рішенні №3 та виводить ефект на браузер. У вас швидкість складеної програми, гнучкість мови краще, ніж SQL, і не потрібно писати плагіни на SQL-сервер. (Знову ж, це приклад, специфічний для SQL та C)


1
Найкраща відповідь для мене, я це отримав.
Даніель Кац

7

Сценарій CGI - це програма консолі / оболонки. У Windows, коли ви використовуєте вікно "Командний рядок", ви виконуєте консольні програми. Коли веб-сервер виконує скрипт CGI, він забезпечує введення в консоль / оболонку програми, використовуючи змінні середовища або "стандартний ввід". Стандартне введення - це як введення даних у програму консолі / оболонки; у випадку сценарію CGI веб-сервер виконує набір тексту. Сценарій CGI записує дані на "стандартний вихід" і цей вихід надсилається клієнту (веб-браузеру) у вигляді HTML-сторінки. Стандартний вихід - це як вихід, який ви бачите в програмі консолі / оболонки, за винятком того, що веб-сервер читає його і відправляє.

Сценарій CGI може бути виконаний із браузера. URI зазвичай включає рядок запиту, який надається сценарію CGI. Якщо метод "get", рядок запиту надається сценарію CGI у змінній середовища, що називається QUERY_STRING. Якщо метод "пост", то рядок запиту надається Сценарію CGI за допомогою стандартного вводу (Сценарій CGI читає рядок запиту зі стандартного вводу).

Раннє використання скриптів CGI полягало в обробці форм. На початку HTML форми HTML зазвичай мали атрибут "action" та кнопку, позначену як кнопку "submit". Після натискання кнопки подання URI, вказаний в атрибуті "action", буде надісланий серверу з даними з форми, що надсилаються у вигляді рядка запиту. Якщо "дія" вказує CGI-скрипт, тоді CGI-сценарій буде виконуватися і він створює HTML-сторінку.

RFC 3875 "Загальний інтерфейс шлюзу (CGI)" частково визначає CGI за допомогою C, як сказано, що до змінних середовища "доступ мають звичайні бібліотеки гетенв () або змінної середовища".

Якщо ви розробляєте скрипт CGI за допомогою C / C ++ і для цього використовуєте Microsoft Visual Studio, тоді ви б розробили консольну програму.


"Сценарій CGI" - це широкий термін, який також може включати виконувані файли.
71ГА

6

CGI - це програма (або веб-API), яку ви пишете та зберігаєте на веб-сайті. CGI - файл.

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

Яку мову ви використовуєте для написання програми CGI? В інших публікаціях вже згадується c, java, php, perl тощо.


4

Ідея CGI полягає в тому, що програма / скрипт (будь Perl чи навіть C) отримує вхід через STDIN(дані запиту) та виводить дані через STDOUT(echo,printf заяви).

Причина, по якій більшість скриптів PHP не кваліфікується, полягає в тому, що вони виконуються під модулем PHP Apache.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.