Вам не потрібно бути чарівником, щоб зрозуміти, як раніше генерувався контент у режимі реального часу. Перш ніж сучасні фреймворки і односторінкові програми, насичені JavaScript, захопили першість, основою динамічного веб-контенту був CGI (Common Gateway Interface — Загальний шлюзовий інтерфейс). Звучить сухо. Але працює просто.
У своїй основі CGI-скрипт — це лише програма. Зазвичай написана на C або PERL вона розміщується в спеціальній папці на сервері, яка зазвичай називається cgi-bin. Коли браузер звертається до URL цього скрипта, сервер не просто надсилає статичний файл. Він запускає програму. Все, що ця програма виводить у стандартний потік виводу (STDOUT), пересилається безпосередньо вашому браузеру.
Є одне правило, яке не можна порушувати. Найперше, що має відправити скрипт, – це заголовок: Content-type: text/html\n\n. Два символи перекладу рядка в кінці. Вони сигналізують браузеру: «Все, що слідує далі, — це HTML». Після цього? Все, що завгодно. Розробники зазвичай надсилають коректні HTML-теги, щоб сторінка відображалася правильно.
Обробка даних форми
Як скрипт дізнається, які дані потрібно опрацювати? Вони надходять із HTML-форми. Ви вказуєте атрибут ACTION у коді форми, що вказує на URL CGI-скрипту. Коли користувач надсилає форму, дані передаються скрипту.
Потім скрипт має виконати основну роботу. Він аналізує вхідні рядки. Він декодує змінені символи (наприклад, перетворює ‘%20’ назад у пробіл). Проста програма C може впоратися з цим аналізом, хоча це вимагає ручного управління пам’яттю і маніпуляцій з рядками.
Якщо ви використовуєте PERL, все простіше. Бібліотека PERL CGI абстрагує від вас складну логіку аналізу. Ви викликаєте функцію і дані вже готові. Це чистіше. Це скоріше писати.
Куди йдуть результати?
У навчальному прикладі можна просто вивести результати на екран. У реальному світі ви хочете зберегти ці дані. Текстові файли? Бази даних? Підходять обидва варіанти. Ви можете додавати відповіді на опитування в лог-файл із C або PERL з мінімальними витратами коду. Саме це збереження даних робить CGI корисним поза простого демо «Hello World».
Спадщина CGI
Ми розглянули основи C та PERL у цьому контексті. Якщо ви хочете заглибитись у механіку, ви можете вивчити, як працюють програми на C або PERL зсередини. Або досліджувати, як веб-сервери керують цими запитами.
Для тих, хто хоче уникнути шаблонного коду, існують ресурси на кшталт cgi-lib.pl. Це бібліотека, яка значно спрощує обробку CGI у PERL. Також існує CGI Resource Index для документації та швидких вступних до HTML-форм.
Це стара технологія. Але вона заклала шаблон того, як сервери спілкуються із зовнішніми програмами. Розуміння цього допомагає вам розібратися в сучасному стеку технологій, навіть якщо ви використовуєте Python або Node.js. Фундаментальне питання залишається незмінним: як ми беремо введення користувача і перетворюємо його на динамічну відповідь?
Відповідь почалася зі скрипту в папці cgi-bin.

















































