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

       

Переменные среды для программы 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 способен подключать пользователей по именам.


                                                                Содержание раздела