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



Функция GetServerVariable


Прототип функции GetServerVariable определен в структуре EXTENSION_CONTROL_BLOCK, описанной нами ранее:

BOOL (WINAPI * GetServerVariable)(HCONN hConn,

     LPSTR lpszVariableName, LPVOID lpvBuffer, LPDWORD lpdwSize);

Через параметр hConn вы должны передать этой функции идентификатор канала, полученный через поле ConnID структуры EXTENSION_CONTROL_BLOCK.

Параметр lpszVariableName должен содержать указатель на строку имени переменной, содержимое которой необходимо получить. Это содержимое будет записано функцией в буфер, адрес которого передается через параметр lpvBuffer, а размер - через параметр lpdwSize.

Ниже мы перечислили возможные значения строк, передаваемых через параметр lpszVariableName:

  • AUTH_TYPE
  • Переменная среды AUTH_TYPE содержит тип идентификации, который применяется сервером.

    • HTTP_ACCEPT
    • В этой переменной перечислены типы данных MIME, которые могут быть приняты навигатором от сервера WWW.

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

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

          • PATH_INFO
          • Путь к виртуальному каталогу, в котором находится библиотека DLL расширения ISAPI.

            • PATH_TRANSLATED
            • Физический путь к библиотеки DLL расширения ISAPI.

              • QUERY_STRING
              • Строка параметров, указанная в форме или операторе ссылки <A>. Эта строка указывается после адреса URL библиотеки DLL расширения ISAPI вслед за разделительным символом “?”.

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

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

                    • REMOTE_USER
                    • Имя пользователя, которое используется навигатором для аутентификации.

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

                        • REQUEST_METHOD
                        • Метод доступа, который используется для передачи данных от навигатора серверу WWW.