Иллюстрированный самоучитель по Perl



         

Передача информации CGI-программе - часть 3


http://www.domain/cgi-bin/registrar.cgi/

4>regname = bobspasswordl = rumataspassword2 = r\amata&age = lt20&language = 4>russian&format = HTML&wish = %F6%C5%CC%Dl%DA%CE%D9

содержит уже знакомые нам данные, но не в виде строки запроса, а в виде дополнительной информации о пути. При получении запроса с таким URL сервер сохранит данные в переменной среды

PATH_INFO = /regname = bobspasswordl = rumataspassword2 = rumata&age = l blt20&language = russian&format = HTML&wish = %F6%C5%CC%Dl%DA%CE%D9"

Название объясняется тем, что обычно этим способом передается информация о местоположении какого-либо файла (extra path information). Например, URL

http://www.domain/cgi-bin/registrar.cgi/texts/jdk_doc.txt

содержит дополнительную информацию PATH_iNFO=/texts/jdk_doc.txt" о местонахождении файла jdk_doc.txt относительно корневого каталога дерева документов. Другая переменная среды PATHJTRANSLATED содержит информацию об абсолютном местоположении файла в файловой системе, например,

PATH_TRANSLATED="/hcme/httpd/docs/texts/jdk_doc.txt"

а переменная DOCUMENT_ROOT содержит путь к корневому каталогу дерева документов, В нашем случае DOCUMENT_ROOT="/home/httpd/docs/".

При использовании метода POST данные формы пересылаются серверу в теле запроса. Если в примере 15.1 вместо метода GET использовать метод POST

<form method="post" action="/cgi-bin/registrar.cgi">,

то запрос клиента будет иметь следующий вид:

POST /cgi-bin/registrar.cgi HTTP/1.1

(заголовки запроса, сообщающие серверу информацию о клиенте)

Content-length: 126

regname=bob&passwordl=rumata&password2=ruinata&age=lt20&language=russian& 4>format=HTML&wish=%F6%C5%CC%Dl%DA%CE%D9

В этом фрагменте среди прочих заголовков выделен заголовок content-length, сообщающий серверу количество байт, переданных в теле запроса. Это значение сервер присваивает переменной среды CONTENT_LENGTH, а данные посылает в стандартный ввод CGI-программы.




Содержание  Назад  Вперед