Шаг 7 - Переменные среды о запросе

При помощи переменных данного типа шлюз узнает полную информацию о запросе к нему. Т.е. каким методом будут передаваться данные, их тип, длину и т.д.

AUTH_TYPE
Тип авторизации используемой сервером. Например:
Basic

Подробнее об авторизации в сервере Apache читайте в "Шаг 18 - Авторизация посетителей".

CONTENT_FILE
Путь к файлу с полученными данными. Используется только в серверах под Windows. Например:
c:\website\cgi-temp\103421.dat
CONTENT_LENGTH
Длинна переданной информации в байтах. То бишь сколько надо считать байтов из stdin. Например:
10353
CONTENT_TYPE
Тип содержимого посланного серверу клиентом. Например:
text/html
OUTPUT_FILE
Файл для вывода данных, используется только серверами под Windows. Аналогично CONTENT_FILE.
PATH_INFO и PATH_TRANSLATED
В современных веб-серверах появилась возможность после имени скрипта указывать еще какой-то определенный путь. Для чего он нужен скрипту я пока не очень понимаю. Но видимо некоторым он сможет пригодиться. Эти переменные работают следующим образом. Предположим существует скрипт с именем 1.cgi в каталоге сервера /cgi-bin, тогда при вызове скрипта в таком виде:
  http://.../cgi-bin/1.cgi/dir1/dir2
данные переменные установятся следующим образом:
PATH_INFO=/dir1/dir2
PATH_TRANSLATED=/home/httpd/html/dir1/dir2

Помоему видно, что эти переменные будут указывать на папку относительно корневой директории сервера. При этом PATH_TRANSLATED будет содержать абсолютный путь до этого каталога на диске сервера. В данном случае корневым каталогом сервера считается /home/httpd/html/, и еще замечу, что это путь в Unix системах.

Под dos/win системами переменная PATH_INFO не изменится, а PATH_TRANSLATED будет содержать d:\apache\htdocs\dir1\dir2 (в данном случае корнем сервера является директория d:\apache\htdocs\).

QUERY_STRING
Содержит данные переданные через URL. Такие данные указываются после имени шлюза и знака ?. Пример:
http://.../cgi-bin/1.cgi?d=123&name=kostia
тогда переменная QUERY_STRING будет содержать
 d=123&name=kostia
и еще незабывайте, что данные передаваемые таким образом кодируются методом URL.
REMOTE_ADDR
Содержит IP адрес пользователя пославшего запрос шлюзу. Если Вы обращаетесь к любому шлюзу в интернете, то данная переменная будет содержать ваш IP адрес. Пример:
 192.168.1.36
REMOTE_HOST
Содержит ваше доменное имя, при условии, что вы прописаны на каком-либо DNS сервере. Например, если ваш Dial-UP провайдер регистрирует все свои динамические IP адреса на DNS сервере, то при обращении к шлюзу, эта переменная может содержать примерно следующее:
d6032.dialup.cornell.edu
или
dial57127.mtu-net.ru
или
ppp-130-66.dialup.metrocom.ru
(брал прямо из логов сервера :-)
REQUEST_METHOD
Мы раньше говорили об этой переменной. Она содержит метод передачи данных шлюзу: GET или POST.
REQUEST_LINE
Содержит строку из запроса протокола HTTP. Например:
GET /cgi-bin/1.cgi HTTP/1.0
SCRIPT_NAME
Содержит имя вызванного скрипта. Например: 1.cgi.

Все эти переменные, надеюсь, обеспечат Вам все самые необходимые данные о запросе к шлюзу.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Кузин Андрей.