Скачать 22.9 Kb.
|
Переменные заголовка HTTP-запроса За исключением тех строк из заголовка HTTP-запроса, которые были включены в другие переменные, сервер приделывает строкам префикс HTTP_ и заменяет знаки “-” на “_”: HTTP_ACCEPT Давая запрос на сервер браузер обычно рассчитывает получить информацию определенного формата, и для этого он в заголовке запроса указывает поле Accept. Отсюда скрипту поступает список тех MIME, которые браузер готов принять в качестве ответа от сервера. Пример: HTTP_ACCEPT=text/html,text/plain,image/gif HTTP_USER_AGENT Браузер обычно посылает на сервер и информацию о себе, чтобы базируясь на знании особенностей и недостатков конкретных браузеров CGI-скрипт мог выдать информацию с учетом этого. Например, разные браузеры могут поддерживать или не поддерживать какие-то HTML тэги. Пример: HTTP_USER_AGENT=Mozila/2.01 Gold(Win95;I) HTTP_HOST Имя хоста к которому обращается браузер. Так как физически на одном сервере может находиться сразу много серверов (Виртуальные Хосты), то должен быть способ сообщить серверу к какому именно идет обращение. Скрипт же может в зависимости от этой переменной производить различные действия, если он используется на сайтах сразу нескольких виртуальных хостов. Пример: HTTP_HOST=www.nnov.city.ru Начнем применять на практике усвоенные уроки. #!/usr/bin/perl #vars.cgi sub urldecode{ #очень полезная функция декодирования local($val)=@_; #запроса,будет почти в каждой вашей CGI-программе $val=~s/\ +/ /g; $val=~s/%([0-9A-H]{ 2} )/pack(‘C’,hex($1))/ge; return $val; } print "Content-Type: text/html\ n\ n"; print " print "\ n"; print "Enter here something: \ n"; print "Your request is:$ENV{ ‘REQUEST_STRING’} \ n"; print "Decoded request is:urldecode($ENV{ ‘REQUEST_STRING’} ) \ n"; print " \ n"; print "Variables: \ n"; print "REQUEST_METHOD=$ENV{ ‘REQUEST_METHOD’} \ n"; print "QUERY_STRING=$ENV{ ‘QUERY_STRING’} \ n"; print "CONTENT_LENGTH=$ENV{ ‘CONTENT_LENGTH’} \ n"; print "CONTENT_TYPE=$ENV{ ‘CONTENT_TYPE’} \ n"; print "GATEWAY_INTERFACE=$ENV{ ‘GATEWAY_INTERFACE’} \ n"; print "REMOTE_ADDR=$ENV{ ‘REMOTE_ADDR’} \ n"; print "REMOTE_HOST=$ENV{ ‘REMOTE_HOST’} \ n"; print "SCRIPT_NAME=$ENV{ ‘SCRIPT_NAME’} \ n"; print "SCRIPT_FILENAME=$ENV{ ‘SCRIPT_FILENAME’} \ n"; print "SERVER_NAME=$ENV{ ‘SERVER_NAME’} \ n"; print "SERVER_PORT=$ENV{ ‘SERVER_PORT’} \ n"; print "SERVER_PROTOCOL=$ENV{ ‘SERVER_PROTOCOL’} \ n"; print "SERVER_SOFTWARE=$ENV{ ‘SERVER_SOFTWARE’} \ n"; print "HTTP_ACCEPT=$ENV{ ‘HTTP_ACCEPT’} \ n"; print "HTTP_USER_AGENT=$ENV{ ‘HTTP_USER_AGENT’} \ n"; print "HTTP_HOST=$ENV{ ‘HTTP_HOST’} \ n"; print " \ n"; print "All enviroment: \ n"; foreach $env_var (keys %ENV){ print "$env_var=$ENV{ $env_var} \ n"; } print " |
Лабораторная работа №3. Создание тестовой системы и счетчика посещений... Правоведение: учебно-методическое пособие для самостоятельной работы студентов [Текст] / сост. С. И. Гутник. – Красноярск: Сиб федер... | Урок Формы Форма предназначена для подготовки и отправки данных шлюзу cgi Параметры action, method и enctype рассматривать не будем (будем писать тег без параметров). Внутри формы используется три элемента-тега:... |