Як CGI-скрипти перетворюють запити браузера на динамічні веб-сторінки

0
2

Вам не потрібно бути чарівником, щоб зрозуміти, як раніше генерувався контент у режимі реального часу. Перш ніж сучасні фреймворки і односторінкові програми, насичені 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.

попередня стаття10 найкращих технологічних подарунків для чоловіків у 2011 році: Почніть з iPhone 4S
наступна статтяЯк статичну електрику живить ваш лазерний принтер