Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Сервер Web своими руками. Язык HTML, приложения CGI и ISAPI, установка серверов Web для Windows

© Александр Фролов, Григорий Фролов
Том 29, М.: Диалог-МИФИ, 1997, 288 стр.

[Назад] [Содеожание] [Дальше]

Переменные среды для программы CGI

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

Изучение переменных среды мы начнем с того, что просмотрим их значение с помощью простейшей программы CGI, созданной с использованием языка пакетных заданий операционной системы Microsoft Windows NT, а проще говоря, с помощью обыкновенного файла с расширением имени bat.

Для запуска этой “программы” мы подготовили форму, исходный текст которой представлен в листинге 7.2.

Листинг 7.2. Файл chap7\viewenv\viewenv.htm


<HTML>
<HEAD>
 <TITLE>Просмотр переменных среды</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<H1>Просмотр переменных среды</H1>
<P>Для просмотра переменных среды, передаваемых программе
CGI, нажмите кнопку &quot;View&quot;
<FORM METHOD=GET ACTION="http://saturn/frolov-cgi/test.bat?param1">
<INPUT TYPE=SUBMIT VALUE="View">
</FORM>
</BODY>
</HTML>

Форма выглядит так, как это показано на рис. 7.3.

Рис. 7.3. Форма для запуска программы CGI просмотра значений переменных среды

Обратите внимание, что после имени программы CGI через разделительный символ “?” указана строка параметров param1, которая может быть получена и проанализирована программой CGI.

Исходный текст программы CGI приведен в листинге 7.3.

Листинг 7.3. Файл chap7\viewenv\test.bat


echo Content-type: text/plain
echo
echo %0 %1 %2 %3
set

В первой строке программа выводит в стандартный поток вывода STDOUT строку заголовка HTTP. Эта строка описывает тип передаваемых данных как text/plain, то есть обычный текст без оформления с использованием операторов HTML.

Вторая строка выводит в стандартный поток вывода пустую строку, которая отделяет заголовок HTTP от передаваемых данных.

Третья строка выводит путь к загрузочному файлу программы CGI и параметры, полученные ей при запуске.

И, наконец, в последней строке вызывается команда SET, которая выводит в поток STDOUT значения всех переменных среды, определенных в системе перед запуском программы.

Результат работы нашей программы CGI показан на рис. 7.4.

Рис. 7.4. Результат работы программы CGI, отображающей значения переменных среды

Ниже мы привели полный листинг, полученный при работе нашей программы CGI:


g:\iisdir\wwwroot\guest>echo
ECHO is on.

g:\iisdir\wwwroot\guest>echo g:\iisdir\wwwroot\guest\test.bat param1?   
g:\iisdir\wwwroot\guest\test.bat param1?  

g:\iisdir\wwwroot\guest>set
AUTH_TYPE=
ComSpec=D:\WINNT35\system32\cmd.exe
GATEWAY_INTERFACE=CGI/1.1
HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
HTTP_REFERER=file:C:\!websrv\Sample\Chap7\viewenv\viewenv.HTM
HTTP_ACCEPT_LANGUAGE=, en
HTTP_UA_PIXELS=1024x768
HTTP_UA_COLOR=color16
HTTP_UA_OS=Windows 95
HTTP_UA_CPU=x86
HTTP_USER_AGENT=Mozilla/2.0 (compatible; MSIE 3.0; Windows 95)
HTTP_HOST=frolov
HTTP_CONNECTION=Keep-Alive
CONTENT_LENGTH=0
CONTENT_TYPE=
PATH=D:\WINNT35\system32;D:\WINNT35;
PATH_INFO=/frolov-cgi/test.bat
PATH_TRANSLATED=g:\iisdir\wwwroot\guest\test.bat
PROMPT=$P$G
QUERY_STRING=param1?
REMOTE_ADDR=154.101.200.255
REMOTE_HOST=154.101.200.255
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/frolov-cgi/test.bat
SERVER_NAME=154.100.100.10
SERVER_PROTOCOL=HTTP/1.0
SERVER_PORT=80
SERVER_SOFTWARE=Microsoft-Internet-Information-Server/1.0
SystemRoot=D:\WINNT35
windir=D:\WINNT35

В этом листинге отображаются переменные среды, определенные специально для программы CGI сервером Microsoft Internet Information Server, а также переменные среды, стандартные для операционной системы Microsoft Windows NT.

Рассмотрим по отдельности назначение переменных среды. Заметим, что набор переменных, создаваемых при запуске программы CGI, зависит от конкретной реализации сервера WWW.

·       · AUTH_TYPE

Технология WWW допускает защиту страниц HTML, когда доступ к отдельным страницам предоставляется только для отдельных пользователей при предъявлении пароля. При этом используется так называемая система аутентификации, или проверки подлинности идентификатора пользователя.

Переменная среды AUTH_TYPE содержит тип идентификации, который применяется сервером. Например, для сервера WWW типа Microsoft Information Server при включении аутентификации в этой переменной будет храниться строка “NTLM”.

·       · GATEWAY_INTERFACE

В этой переменной находится версия интерфейса CGI, с которой работает данный сервер. В нашем случае интерфейс имеет версию 1.1.

·       · HTTP_ACCEPT

В этой переменной перечислены типы данных MIME, которые могут быть приняты навигатором от сервера WWW. Из приведенного выше листинга видно, что сервер Microsoft Internet Information Server может передать навигатору Microsoft Internet Explorer (который был использован для работы с программой CGI) графические изображения (image) в формате gif, jpeg, pjpeg, x-xbitmap. Подробно эти типы данных описаны в спецификации протокола MIME, рассмотрение которой выходит за рамки нашей книги.

·       · HTTP_REFER

В переменную HTTP_REFER записывается адрес URL документа HTML, который инициировал работу программы CGI. В нашем случае этот документ был записан на локальном диске компьютера в каталоге C:\!websrv\Sample\Chap7\viewenv.

·       · HTTP_ACCEPT_LANGUAGE

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

·       · HTTP_UA_PIXELS

Разрешение видеоадаптера, установленное в компьютере пользователя.

·       · HTTP_UA_COLOR

Допустимое количество цветов в системе пользователя.

·       · HTTP_UA_OS

Операционная система, под управлением которой работает навигатор.

·       · HTTP_UA_CPU

Тип центрального процессора в компьютере удаленного пользователя.

·       · HTTP_USER_AGENT

В эту переменную записывается имя навигатора, с помощью которого запрашивается документ HTML. Анализируя это имя, программа CGI может принимать решение об использовании тех или иных расширений стандарта языка HTML, допустимого для конкретного навигатора.

·       · HTTP_HOST

Имя узла, на котором работает сервер WWW.

·       · HTTP_CONNECTION

Тип соединения.

·       · HTTP_ACCEPT_ENCODING

Метод кодирования, который может быть использован навигатором для формирования ответа серверу WWW.

·       · HTTP_AUTHORIZATION

Информация авторизации от навигатора. Используется навигатором для собственной аутентификации в сервере WWW.

·       · HTTP_FROM

Имя пользователя в виде, как оно было зарегистрировано при настройке навигатора. Используется формат адресов электронной почты.

·       · HTTP_PRAGMA

Специальные команды серверу WWW.

·       · CONTENT_LENGTH

Количество байт данных, которые программа CGI должна получить от навигатора.

·       · CONTENT_TYPE

Тип данных, присланных навигатором.

·       · PATH_INFO

Путь к виртуальному каталогу, в котором находится программа CGI.

Как правило, при настройке сервера WWW администратор выделяет один или несколько каталогов для хранения расширений сервера в виде программ CGI или ISAPI. Для файлов, записанных в такие каталоги, устанавливается доступ на запуск.

Администратор создает таблицу соответствия физических каталогов и виртуальных, определяя права доступа к виртуальным каталогам с помощью программы настройки параметров сервера WWW.

·       · PATH_TRANSLATED

Физический путь к программе CGI.

·       · QUERY_STRING

Строка параметров, указанная в форме после адреса URL программы CGI после разделительного символа “?”.

·       · REMOTE_ADDR

Адрес IP узла, на котором работает навигатор удаленного пользователя.

·       · REMOTE_HOST

Доменное имя узла, на котором работает навигатор удаленного пользователя. Если эта информация недоступна (например, для узла не определен доменный адрес), вместо доменного имени указывается адрес IP, как в переменной REMOTE_ADDR.

·       · REMOTE_USER

Имя пользователя, которое используется навигатором для аутентификации. Используется только в том случае, если сервер WWW способен работать с аутентификацией и программа CGI отмечена как защищенная.

·       · REQUEST_METHOD

Метод доступа, который используется для передачи данных от навигатора серверу WWW. В своих примерах мы используем методы доступа GET и POST, хотя протокол HTTP допускает применение и других методов доступа, например, PUT и HEAD.

·       · SCRIPT_NAME

В эту переменную записывается путь к виртуальному каталогу и имя программы CGI. Анализируя эту переменную, программа CGI может определить путь к своему загрузочному файлу.

·       · SERVER_NAME

Доменное имя сервера WWW или адрес IP сервера WWW, если доменное имя недоступно или не определено.

·       · SERVER_PROTOCOL

Имя и версия протокола, который применяется для выполнения запроса к программе CGI.

·       · SERVER_PORT

Номер порта, на котором навигатор посылает запросы серверу WWW.

·       · SERVER_SOFTWARE

Название и версия программного обеспечения сервера WWW. Версия следует после названия и отделяется от последнего символом “/”.

·       · REMOTE_IDENT

Имя, с которым пользователь подключился к серверу WWW. Используется только в том случае, если сервер WWW способен подключать пользователей по именам.

[Назад] [Содеожание] [Дальше]