Когда сервер выполняет скрипт, для него создаются некоторые переменные окружения, среди которых как локальные данные (адрес скрипта на сервере, версия П/О сервера), так и данные полученные с HTTP запросом (версия браузера, IP удаленной машины и т.д.) . Знать эти данные для CGI программиста просто жизненно важно. Вот эти переменные:
| $ENV{'REQUEST_METHOD'} | Это одно из самых главных поле используемое для определения метода запроса HTTP. Протокол HTTP использует методы GET и POST для запроса к серверу. Они отличаются тем что при методе GET запрос является как бы частью URL т.е. http://..../cgi-bin/myscript.cgi?param=value а при методе POST данные передаются в теле HTTP-запроса (при GET тело запроса пусто). Для нас пока интересен только метод GET. |
| $ENV{'QUERY_STRING'} | Это строка запроса при методе GET. |
| $ENV{'CONTENT_TYPE'} | Тип тела запроса. |
| $ENV{'REMOTE_ADDR'} | IP-Адрес удаленного Хоста, делающего данный запрос. |
| $ENV{'REMOTE_HOST'} | Если запрашивающий Хост имеет доменное имя, то эта переменная содержит его, в противном случае -тот же самый IP-адресс что и REMOTE_ADDR. |
| $ENV{'SCRIPT_NAME'} | Содержит URL адрес файла скрипта. |
| $ENV{'SCRIPT_FILENAME'} | Полный путь к скрипту на сервере. |
| $ENV{'SERVER_NAME'} | Имя серера ,чаще всего доменное как www.microsoft.com ,но в редких случаях за неимением такового может быть IP-адресом. |
| $ENV{'SERVER_PORT'} | TCP-Порт сервера использующийся для соединения .По умолчанию HTTP-порт 80, хотя может быть в некоторых случаях другим. |
| $ENV{'SERVER_SOFTWARE'} | Программное обеспечение сервера. |
| $ENV{'AUTH_TYPE'} $ENV{'REMOTE_USER'} |
Эти переменные определены в том случае, когда запрошенный ресурс требует аутентификации пользователя. |
| $ENV{'HTTP_ACCEPT'} | Давая запрос на сервер браузер обычно рассчитывает получить информацию определенного формата, и для этого он в заголовке запроса указывает поле Accept:, Отсюда скрипту поступает список тех MIME, которые браузер готов принять в качестве ответа от сервера. |
| $ENV{'HTTP_USER_AGENT'} | Браузер обычно посылает на сервер и информацию о себе, чтоб базируясь на знании особенностей и недостатков конкретных браузеров CGI-скрипт мог выдать информацию с учетом этого. Например, разные браузеры могут поддерживать или не поддерживать какие-то HTML тэги. |
| $ENV{'CONTENT_LENGTH'} | Длина в байтах тела запроса. |
| $ENV{'GATEWAY_INTERFACE'} | Версия протокола CGI. |
| $ENV{'SERVER_PROTOCOL'} | Версия HTTP протокола сервера. |