то веб-сервер запустит на выполнение script.cgi, а тот в свою очередь сможет заполучить ПАРАМЕТРЫ. А вот о том, откуда он их получит, позже.
Кроме вышеперечисленных методов, существуют еще методы PUT - для сохранения данных в указанном ресурсе и DELETE - для удаления указанного ресурса. Как правило они не поддерживаются веб-серверами, сами понимаете почему.
Теперь пример запроса:
GET /~user/cgi-bin/test.pl HTTP/1.0
Это конечно самый простой пример. Обычно, запрос выглядит гораздо сложнее и состоит из нескольких строк. Чтобы веб-сервер знал, что ввод данных закончен, нужно послать ему пустую строку. Т.е в данном примере, нужно нажать Enter два раза (один раз - переход на новую строчку, второй раз - пустая строка).
Если вы запрашиваете главную страницу сайта (т.е. в браузере это www.perl.ru) запрос будет выглядеть так:
GET / HTTP/1.0
Практически все переданные данные можно узнать непосредственно в скрипте на перле. Для этого служит массив %ENV, в котором хранятся так называемые переменные среды CGI. Например:
$ENV{REQUEST_METHOD} = GET
$ENV{QUERY_STRING} = те самые
параметры (script.cgi?параметры)
Узнать все пременные очень просто:
foreach (keys %ENV){
print "$_ = $ENV{$_}\n";
}
Какую же еще информацию, мы можем передавать веб-серверу?
Поле | Пример | Описание |
Date: | Date: Sun, 30 Dec 2000 23:59:59 GMT | Дата запроса. |
MIME-version: | MIME-version: 1.0 | Версия MIME. |
Pragma: | Pragma: no-cache | Информация для шлюзов и прокси-серверов. |
Authorization: | Authorization: Basic QWxhZGRpbj pvcGVuIHNlc2FtZQ== | Информация для авторизации. |
From: | From: Pupkin@mail.ru | e-mail пользователя браузера. |
If-Modified-Since: | If-Modified-Since: Sun, 30 Dec 2000 23:59:59 GMT | Используется при методе GET. Документ возвращается только в том случае, если он изменился с указанного момента. Как правило браузер, запрашивает документ подобным образом, если копия документа содержится у него в кеше. И соответственно выдает пользователю информацию из кеша или обновленный документ. |
Referer: | Referer: http://www.perl.ru/ | URL предшествующего ресурса. Именно по нему на некоторых сайтах определяется, насколько хорошо их рекламирует тот или иной ресурс. |
User-Agent: | User-Agent: Mozilla/5.0 | Имя клиента. Может стоять что угодно, но некоторые, особенно гадкие сервера, не выдают страницы "не браузерам". |
Host: | Host: vasya.narod.ru | Имя хоста. Дело в том, что в сети существует очень большое количество виртуальных серверов, т.е. серверов с разными именами, но одним IP адресом. Именно по этой переменной веб-сервер определяет какую же информацию вам дать. |
Accept: | Accept: text/html | Указывает серверу, выдавать только данные указанного типа. |