"Дмитрий Леонов. Использование Perl в интернет-технологиях" - читать интересную книгу автораapplication/x-www-form-urlencoded), а также длина строки. Сама строка в этом
случае передается непосредственно в теле запроса (примеры приведены чуть ниже). В заголовках запроса также передается значительное количество вспомогательной информации: тип браузера, адрес страницы, с которой был произведен запрос, и т. д. Вся эта информация передается в HTTP-заголовках, имеющих вид "Имя: значение". Отделяются друг от друга заголовки с помощью символа новой строки, завершается их список еще одним символов новой строки. Сервер вызывает CGI-приложение, и в зависимости от метода запроса передает информацию из формы через переменную окружения QUERY_STRING (в случае GET) либо через стандартный ввод (в случае POST). Также формируются другие переменные окружения, такие как HTTP_USER_AGENT, REMOTE_HOST и др. Информация для 'njuj окружения берется из HTTP-заголовков. CGI-приложение считывает строку с переданной информацией со стандартного ввода (stdin) или из переменной окружения QUERY_STRING. Обработав информацию, программа, как правило, либо переадресует браузер на некоторый существующий документ с помощью http-заголовка Location, либо формирует виртуальный документ, посылая информацию на стандартный вывод (stdout). Телу документа предшествуют HTTP-заголовки, описывающие тип возвращаемых данных, управляющие кэшированием, работой с cookies и т. д. Все это передается серверу. Сервер пересылает ответ CGI-приложения браузеру, дополняя их при необходимости кодом возврата и вспомогательными заголовками. При этом используется один из двух способов - перенаправление броузера на новый адрес с помощью http-заголовка Location, либо формирование виртуального документа. В последнем случае значение, переданное в заголовке Content-type, например, text/html для виртуальных html-документов. Браузер, основываясь на заголовках HTTP, интерпретирует ответ CGI-приложения и выводит его для просмотра пользователем. Реализовать CGI-приложение можно на любом языке, способном генерировать код для серверной платформы или для которого доступен интерпретатор. Так, простейшее CGI-приложение может быть реализовано на языке пакетных файлов DOS, на Delphi, С/С++, Tcl, Visual Basic, AppleScript, FoxPro, Perl и т. д. Основные недостатки классического CGI - каждое взаимодействие клиента с сервером, во-первых, является независимым от предыдущих и последующих взаимодействий, во-вторых, приводит к запуску на сервере отдельного процесса. Первый недостаток является тяжелым наследием HTTP-протокола, не имеющего гарантированно работающих средств идентификации клиентов, и все существующие решения способны лишь слегка сгладить этот недостаток. Борьба со вторым недостатком идет гораздо успешнее, и вполне приемлемые решения существуют для обеих наиболее распространенных серверных платформ. Для серверов, основанных на Unix-платформах, одним из самых популярных решений является использование mod_perl - модуля, интегрирующего в web-сервер Apache интерпретатор языка Perl. Это позволяет резко уменьшить нагрузку на сервер при запуске CGI-приложений, написанных на Perl. И это только верхняя часть айсберга - mod_perl позволяет разработчику писать на Perl полноценные подключаемые модули Apache, что открывает перед программистом довольно широкие возможности. Другим популярным решением является PHP - скриптовый язык, встраиваемый непосредственно в тело html-страницы. Перед тем, как отослать html-документ клиенту, сервер |
|
|