Программирование в IIS

       

Значения серверных переменных


Возможные значения запрашиваемых серверных переменных приведены в листинге 5.3 в коде функции HttpExtensionProc в расширении ISAPI SEUX; они являются аргументами в вызовах GetECBElement. Значения серверных переменных могут изменяться в процессе текущего события запроса HTTP в IIS, и зачастую переменной не присваивается значение. Серверные переменные содержат значения только при определенных настройках IIS. В таблице 5.2 приведены серверные переменные, запрашиваемые с помощью функции GetServerVariable.

Таблица 5.2. Обзор переменных сервера, запрашиваемых функцией GetServerVariable

Константа ошибкиОписание ошибки
ERROR_INVALID_PARAMETERЗначение hConn является некорректным или закрытым, либо неверны параметры серверной переменной.
ERROR_INVALID_INDEXЗапрашиваемая серверная переменная не поддерживается.
ERROR_INSUFFICIENT_BUFFERРазмер lpdwSizeofBuffer слишком мал для содержания значения запрашиваемой серверной переменной.
ERROR_NO_DATAЗапрашиваемая серверная переменная недоступна.
ALL_HTTPВсе HTTP-заголовки (разделены символами новой строки), переданные в запросе HTTP в строке с символом конца строки. Заголовки имеют вид <имя заголовка> : <значение>.
ALL_RAWВсе заголовки HTTP в том виде, в котором они были отправлены запрашивающей HTTP-стороной.
APPL_MD_PATHПуть метабазы веб-приложения. Например, /LMW3SVC/1/Root/SimpleISAPI.
APPL_PHYSICAL_PATHФизический путь корневого веб-каталога для веб-приложения. Например: C:\ISAPI\.
AUTH_PASSWORDПароль, вводимый веб-пользователем в диалоговом окне аутентификации браузера, если установлена базовая аутентификация.
AUTH_TYPEИспользуемый тип аутентификации. Пустое значение при отсутствии аутентификации либо значение, соответствующее Kerberos, пользовательской аутентификации, SSL/PCT, базовой или интегрированной аутентификации Windows.
AUTH_USERИмя пользователя, вводимое пользователем в диалоговом окне аутентификации браузера в случае, если установлена базовая аутентификация.
CERT_COOKIEУникальный идентификатор сертификата клиента.
CERT_FLAGSБитовые флаги бюро сертификатов (CA) сертификата клиента. Если bit0 равен 1, то CA отсутствует в списке распознаваемых бюро сертификатов данного сервера и признается недействительным.
CERT_ISSUERСодержит имя сертификата клиента. Например, O=Schmidlaps, OU=House, CN= имя пользователя, C=USA.
CERT_KEYSIZEРазмер ключа в битах при соединении SSL.
CERT_SERCRETKEYSIZEРазмер секретного ключа сертификата сервера в битах.
CERT_SERIALNUMBERСерийный номер сертификата клиента.
CERT_SERVER_ISSUERПодробное имя издателя сертификата сервера.
CERT_SERVER_SUBJECTПодробное имя субъекта сертификата сервера.
CERT_SUBJECTСубъект сертификата клиента.
CONTENT_LENGTHКоличество байт, исключая заголовки HTTP-запроса.
LOGON_USERЕсли конечный пользователь успешно аутентифицировался в Windows, используется учетная запись входа в систему.
HTTPSВозвращает значение off, если в HTTPS не используется SSL, в противном случае возвращается значение on.
HTTPS_KEYSIZEРазмер ключа SSL-соединения в битах.
HTTP_SECRETKEYSIZEРазмер секретного ключа сертификата сервера в битах.
HTTPS_SERVER_ISSUERПодробное имя издателя сертификата сервера.
HTTPS_SERVER_SUBJECTПодробное имя субъекта сертификата сервера.
INSTANCE_IDНомер экземпляра сервера. Значения идентификатора сервера в метабазе, например, 1.
INSTANCE_META_PATHПуть веб- экземпляра в метабазе, например: LM/W3SVC/1.
PATH_INFOЧасть URL, расположенная между ISAPI DLL и началом секции с дополнительной информацией в URL. Как правило, в этом месте нет никаких данных, если запрашивающее ПО не добавляет свое значение.
PATH_TRANSLATEDЧасть веб-экземпляра, связанная с физическим жестким диском, с конкатенацией значения PATH_INFO.
QUERY_STRINGСтрока символов, следующих за символом "?" в секции дополнительной информации URL.
REMOTE_ADDRIP-адрес хоста или шлюза запрашивающего ПО.
REMOTE_HOSTИмя узла или шлюза запрашивающего ПО, если включен обратный поиск DNS; иначе возвращается значение IP-адреса узла или шлюза запрашивающего ПО.
REMOTE_USERИмя пользователя, осуществляющего HTTP-запрос и аутентифицируемого несущим сервером. Представляет собой пустую строку для анонимного пользователя.
REQUEST_METHODКоманда метода HTTP-запроса.
SCRIPT_NAMEИмя исполняемого двоичного файла, например, имя ISAPI DLL или исполняемого файла CGI.
SERVER_NAMEИмя узла сервера или IP-адрес.
SERVER_PORTПорт TCP/IP, по которому получен запрос.
SERVER_PORT_SECUREЗначение 0 или 1. Запросы по безопасному порту возвращают 1; иначе возвращается 0.
SERVER_PROTOCOLИмя и версия протокола запроса, например, HTTP 1.1.
SERVER_SOFTWAREИмя и версия IIS, под которой выполняется программа DLL расширения ISAPI, например, Microsoft-IIS/6.0.
URLЗначение части url-путь адреса URL, исключая значение PATH_INFO. Например: /simpleisapi/folder1/folder2/SEUX.dll.
<
Для демонстрации значений таблицы 5.2 в листинге 5. 5 приведен документ XML, созданный из расширения ISAPI SEUX.DLL. В данном примере несущий сервер и IIS настроены таким образом, что многие значения серверных переменных получаются в процессе HTTP-запроса. Имя несущего узла – amd1700v2. IIS 6 на amd1700v2 настроен с использованием следующих значений параметров и файловых расположений.

  • Физическое расположение расширения ISAPI SEUX.DLL.

    C:\ISAPI\папка1\папка2\SEUX.dll.
  • Корень веб- экземпляра. C:\inetpub\wwwroot.
  • Связанный виртуальный каталог. C:\ISAPI.
  • Анонимный доступ. Не включен для виртуального каталога.
  • Базовая аутентификация. Включена для виртуального каталога.


Расширение ISAPI SEUX.dll запрошено с amd1700v2 с помощью следующих данных браузера, расположенного на отдельном компьютере.

  • Пользователь, осуществивший вход на веб-сайт под именем normaluser.
  • Пользователь, осуществивший вход на веб-сайт с использованием пароля normaluser.
  • URL в браузере: http://amd1700v2/simpleisapi/folder1/folder2/SEUX.dll/PATH_INFO?parm1=value1&parm2=value


Листинг 5.5. SEUX.DLL Output from http://amd1700v2/simpleisapi/folder1/folder2/SEUX.dll/PATH_INFO? parm1=value1&parm2=value (html, txt)


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