Значения серверных переменных
Возможные значения запрашиваемых серверных переменных приведены в листинге 5.3 в коде функции HttpExtensionProc в расширении ISAPI SEUX; они являются аргументами в вызовах GetECBElement. Значения серверных переменных могут изменяться в процессе текущего события запроса HTTP в IIS, и зачастую переменной не присваивается значение. Серверные переменные содержат значения только при определенных настройках IIS. В таблице 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_ADDR | IP-адрес хоста или шлюза запрашивающего ПО. |
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)