Как CGI-скрипты превращают запросы браузера в динамические веб-страницы

0
8

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