Версия спецификации CGI. Формат: CGI/версия. Для данной
версии, "CGI/1.2 (Win)". Remote Host
- Сетевое имя хоста клиента, если доступно. Данный параметр
может быть использован для опознавание клиента.
Remote Address
- Сетевой (IP) адрес клиента. Данный параметр может быть
использован для проверки пользователя если отсутствует сетевое
имя.
Authentication Method
- Если используется защищенный вызов CGI программы, это
протокол-зависимый метод аутентификации, используемый для
аутентификации пользователя.
Authentication Realm
- Если используется защищенный вызов CGI программы, это
протокол-зависимый сервис, используемый для аутентификации
пользователя. Список пользователей для полученного вида сервиса
iпроверяется для аутентификации пользователя.
Authenticated Username
- Если используется защищенный вызов CGI программы, это имя
пользователя, которое клиент использует для аутентификации при
доступе к CGI-программе.
Секция [Accept]
Данная секция содержит типы данных, посылаемых клиентом,
найденные в заголовке запроса в виде
Accept: type/subtype {parameters}
Если данные параметры присутствуют (например, "q=0.100") , они
передаются как значения параметра Accept. Для каждого типа
передаваемых данных заводится свой параметр Accept.
Секция [System]
Данная секция содержит параметры, специфические для Windows
реализации CGI:
GMT Offset
- Количество секунд, которое необходимо добавить к времени по
Гринвичу для вычисления локального времени клиента.
Debug Mode
- Данный параметр имеет значение "Yes" если включен режим
"CGI/script tracing" на сервере.
Output File
- Полный путь к файлу, в который необходимо поместить данные,
отсылаемые сервером клиенту после завершения работы программы.
Content File
- Полный путь к файл у в котором содержится дополнительная
информация, поступающая вместе с запросом.
Секция [Extra Headers]
Данная секция содержит "дополнительные" заголовки, которые
включены в запрос в виде "параметр=значение". Сервер должен
раскодировать как параметр, так и его значение прежде чем они
будут помещены в файл данных CGI.
Секция [Form Literal]
Если запрос от клиента пришел в виде HTTP POST из HTML формы (с
типом содержимого application/x-www-form-urlencoded или
multipart/form-data), то сервер раскодирует данные из формы и
поместит их в секцию [Form Literal].
Для URL-кодированных данных формы, строка передаваемых
параметров выглядит как
"параметр=значение&параметр=значение&...", где значения
находятся в url-кодированном формате. Сервер разделяет
"параметр=значение" по символу '&', затем разделяет собственно
"параметр" и "значение", декодирует "значение" и помещает
результат в виде "параметр=раскодированное_значение" в секцию
[Form Literal].
Для многостраничных данных строка данных представляется в
многостраничном MIME формате, где каждое поле представлено как
отдельная часть (файл). сервер декодирует имена и значение каждой
части и размещает их в формате "параметр=значение" в секции [Form
Literal].
Если форма содержит какие-либо элементы SELECT
MULTIPLE, то будет создано несколько строк с вида
"параметр=значение" с одинаковым именем "параметра". В этом случае
генерирует нормальную строку "параметр=значение" для первого
встречающегося элемента, а каждый следующий представляет в виде
"параметр_X=значение", где "X" - увеличивающийся счетчик.
Секция [Form External]
Если размер декодированной строки превышает 254 символа или
декодированная строка содержит управляющие символы, такие, как
перевод строки, возврат каретки, двойные кавычки и т.д., то сервер
помещает данное значение в отдельный временный файл, а в секцию
[Form External] помещает строку в виде:
параметр=путь длина
где путь - это полный путь и имя временного файла,
содержащего декодированное значение параметра, а длина - длина в
байтах этого файла.
Секция [Form Huge]
Если общая длина строки с кодированными параметрами превышает
65,535 байт, то сервер не выполняет декодирование, а оставляет
данный в Content File, а в секцию [Form Huge] помещает строки в
виде:
параметр=смещение длина
где смещение - это смещение от начала Content File по
которому находится требуемый параметр, а длина - длина в
байтах значения выбранного параметра. Вы можте использовать
смещение для выполнения поиска начала значения выбранного
вами параметра и использовать длину для чтения значения выбранного
параметра. Не забывайте, что если параметр закодирован, то вам
необходимо раскодировать его перед использованием.
Секция [Form File]
Если запрос пришел в виде multipart/form-data, то он
может содержать один или несколько загруженных с клиента файлов. В
этом случае каждый загруженный файл размещается в специальном
временном файле, а в секции [Form File] строки имеют тот же
формат, что и секции [Form External]. каждая строка параметра в
этом случае выглядит так:
параметр=[полный_путь_к_файлу] длина тип ссылка [имя_файла]
где полный_путь_к_файлу - это путь к временному файлу,
содержащему загруженный файл, длина - длина в байтах
загруженного файла, тип - тип MIME загруженного
файла, ссылка - способ кодировки загруженного файла и
имя_файла - исходное название загруженного файла.
Использование квадратных скобок обязательно, поскольку имя файла
и путь могут содержать символы пробела.
Пример декодированных значений формы
В данном примере форма содержит небольшое поле, SELECT MULTIPLE
с 2-мя небольшими секциями, поле длиной 300 символов, поле,
содержащее специальные символы и поле длиной 230KB.
[Form Literal]
smallfield=123 Main St. #122
multiple=first selection
multiple_1=second selection
[Form External]
field300chars=C:\TEMP\HS19AF6C.000 300
fieldwithlinebreaks=C:\TEMP\HS19AF6C.001 43
[Form
Huge]
field230K=C:\TEMP\HS19AF6C.002 276920