Создание серверных приложений на языке PERL


Протокол HTTP





Что такое протокол HTTP и для чего он нужен, я думаю расказывать не нужно, поэтому сразу приступим к более подробному рассмотрению. Какое отношение HTTP протокол имеет к Perl? Да самое прямое. Без знания HTTP протокола, нельзя написать практически никакого CGI скрипта.

Итак, договоримся о терминах.
Веб-сервер - програмное обеспечение, которое следит за 80 (возможны и другие варианты, но данный наиболее популярен) портом и в случае обнаружения запроса, выдает некоторую информацию (сообщение об ошибке, html документ).
Клиент - программное обеспечение осуществляющее подключение к 80 порту сервера и посылающее туда запрос.


Помимо выдачи статичных документов, веб-серверы умеют выдавать результаты работы скрипта. т.е. если клиент запрашивает документ, который на самом деле является CGI скриптом, то веб-сервер запускает этот скрипт на выполнение, а всю информацию полученную со стандартного выхода скрипта, перенаправляет клиенту.

В процессе прочтения данного документа, вам наверно захочется попробовать все предложенные примеры. Используйте для этого любой telnet клиент. Просто соединитесь с 80 портом сервера, на котором расположен ваш любимый сайт.

Взаимодействие, между веб-сервером и клиентом просто до неприличия. Клиент посылает запрос состоящий из заголовка и (иногда) тела, а веб-сервер выдает ответ, который так же состоит из заголовка и тела. Рассмотрим более детально, как же выглядят эти запросы и ответы.



Любой запрос начинается строкой:


МЕТОД РЕСУРС HTTP/версия


МЕТОД - один из поддерживаемых веб-сервером методов. Наиболее распространены:

GET - в этом случае выдается запрошенный ресурс. Самый старый и самый распространенный метод.

HEAD - в этом случае, выдается только заголовок документа. Из заголовка можно узнать существует ли документ, его размер и еще некоторую информацию, о которой ниже. Данный метод, как правило, используется для проверки ссылок и кеширующими системами.

POST - аналогичен методу GET, но не только запрашивает ресурс, но и передает ему некоторую информацию. Если ресурс - CGI скрипт, то информация поступает на его стандартный ввод. Метод GET тоже умеет передавать информацию для CGI скриптов, но передает он ее в самом имени ресурса. Дело в том, что если мы вызовем CGI скрипт таким образом:



script.cgi?ПАРАМЕТРЫ




Начало  Назад  Вперед



Книжный магазин