|
|
|
||||||||||||||||||||||||||
|
СОДЕРЖАНИЕ
|
создать сайт // учебник CGI // как работает CGI-программа
Как работает CGI-программаCGI - это стандарт, или набор правил, определяющих как Web-сервер и внешняя по отношению к нему программа общаются между собой. Для иллюстрации того, как это все работает, я приведу описание полного сеанса HTTP, чтобы вам было легче понять взаимосвязь явлений. Как делается запрос на ресурсСеанс HTTP (процесс передачи данных по протоколу HTTP) начинается с того, что клиент (обычно это Web-броузер) запрашивает некоторый ресурс у Web-сервера. Вы, конечно, помните, что всякий ресурс однозначно определяется своим URL (uniform resourse locator). Когда речь идёт о простых статических Web-страницах, ресурс представляет собой файл, а URL - положение этого файла на диске. Предположим, в нашем случае URL выглядит так: Этот URL соответствует файлу Если Web-серверу удалось найти и прочитать этот файл, содержимое файла передается запросившему его броузеру. Если же URL указывает на CGI-программу, все обстоит немного сложнее. Давайте для примера рассмотрим следующий URL: В данном случае запрошенным ресурсом является программа с именем Этот процесс существенно отличается от обмена статичными HTML-файлами. Прежде всего, возникает гораздо больше поводов для ошибочной ситуации. Когда запрошена CGI-программа, сервер должен проверить следущее.
Только в случае положительного ответа на все эти вопросы сервер может успешно обслужить запрос. Если хотя бы на один из вопросов получен отрицательный ответ, возникает сообщение об ошибке или просто происходит не то что ожидалось. Как выполняется запросКак говорилось выше, CGI-программа должна генерировать заголовок типа возвращаемых данных, для того чтобы броузер знал, что возвращает программа. Типы возвращаемых данных определяются стандартом MIME. Обычно стандарт MIME ассоциируется с почтовыми сообщениями, но в случае с типом данных работает та же самая система, что и с типом данных, вложенных в сообщение электронной почты. В следующей таблице перечисленны типы данных, которые может возвращать CGI-программа.
Если программа возвращает текст HTML, она должна генерировать такой заголовок типа данных:
Эта информация передаётся серверу, который вместе с другими заголовками передает ее броузеру. Протокол HTTP требует, чтобы заголовок отделялся от содержания двумя символами перевода строки. Когда броузер встречает два последовательных символа перевода строки, он понимает, что заголовок закончился и начинается блок данных, которые должны быть обработаны. Таким образом, проболжая наш пример, если программа
Как вы видите, необходимый заголовок отделен от собственно содержания двумя символами перевода строки. (Обратите внимание - два перевода строки выглядят как одна пустая строка!) Кроме того, сервер может включить в передаваемые данные другие заголовки и другие блоки данных. В этом случае полный ответ сервера броузеру может выглядеть так:
|
|
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||