CGI спецификациясы

CGI-дің CGI-программасы, веб-сервер және Web клиенті арасында мәліметтерді жіберетін төрт тәсілі бар:

§ Айнымалылар қоршауы.

§ Командалық қатар.

§ Стандартты енгізу құрылғысы.

§ Стандартты шығару құрылғысы.

Осы төрт әдістің көмегімен сервер клиент жіберген барлық мәліметтерді CGI-программаға қайта жібереді. Одан кейін CGI-программа өзінің таңғажайып ісін орындап, барлық шығу ақпараттарын қайтадан серверге жібереді.

Айнымалылар қоршауы

Сервер CGI-программаны орындаған кезде, ең алдымен оған жұмысқа арналған бірқатар мәліметтерді айнымалылар қоршауы түрінде жібереді. Спецификацияда ресми түрде он жеті айнымалы анықталған, бірақ HTTP_mechanism деп аталатын механизм көмегімен бұдан көбірек қолданылады. CGI-программа бұл айнымалылардың кез келгенін командалық қатардан іске қосу кезіндегі командалық үрдісор ортасының кез келген айнымалысы сияқты қолдана алады. Мысалы, командалық үрдісор сценарийінде FOO айнымалылар қоршауымен $FOO түрінде қатынасуға болады. 5.1-кестеде мәні null болса да, әрқашанда сервер орнататын айнымалылардың тізімі берілген. Бұл айнымалылардан өзге, клиентке оралған сұраныстың тақырыбында HTTP_FOO түріндегі айнымалылар бар, мұндағы FOO – тақырып аты. Мысалы, көптеген веб-броузерлерде USER_AGENT түріндегі мәліметтер бар. Біздің CGI-программа бұл мәліметтерді HTTP_USER_AGENT айнымалысынан ала алады.

5.1- кесте. CGI айнымалылар қоршауы

Айнымалылар қоршауы Сипаттамасы
CONTENT LENGTH POST немесе PUT әдісімен берілген мәліметтер ұзындығы, байтпен
CONTENT_TYPE POST немесе PUT әдісінің көмегімен байланыстырылған MIME мәліметтерінің типі.
GATEWAY_INTERFACE Сервер қолдайтын CGI спецификациясының нұсқасының нөмірі
PATH_INFO Клиент жіберген жол жөнінде қосымша ақпарат. Мысалы, http://www.myserver.com/test.cgi/this/is/a/ path?field=green сұранысы үшін РАTH_INFO айнымалысының мәні /this/is/a/path болады
PATH_TRANSLATED PATH_INFO сияқты, бірақ сервер барлық мүмкін болатын трансляцияны орындайды, мысалы «~account» типі атауын орналастыру.
QUERY_STRING URL-де «?» символынан кейінгі барлық мәліметтер. Бұл сонымен бірге GEТ формасы бар REQUEST_METOD берілетін мәліметтер.
REMOTE_ADDR Сұраныс жасап отырған клиенттің IP-адресі.
REMOTE_HOST Қатынас құруға болатын клиент машинасы түйінінің аты.
REMOTE_IDENT Егер веб-сервер мен клиент identd түріндегі идентификацияны қолдаса, сұраныс жасайтын тіркеу жазбасының пайдаланушы аты.
REQUEST_METHOD Клиент қолданатын сұранысқа арналған әдіс. CGI-программалары үшін, бұл әдетте POST немесе GET болады.
SCRIPT_NAME Клиент көрсеткен орындалатын сценарий жолы. URL сілтемесі кезінде өзіне өзісілтеме ретінде қолданылады және әр түрлі орындардағы сілтемелер орналасқан орнына қатыссыз орындалу үшін қолданылады.
SERVER_NAME Машинаның аты қатынас құруға мүмкін болмаған жағдайда Веб-сервер орындалатын түйін аты немесе IP-адрес.
SERVER_PORT Веб-сервер қолданатын порттың нөмірі..
SERVER_PROTOCOL Сервермен байланысу үшін клиент қолданатын хаттама. Біздің жағдайымызда бұл әркезде дерлік HTTP болады.
SERVER_SOFTWARE CGI-программаны орындайтын веб-сервердің нұсқасы жөнінде мәлімет.

Сервер жіберілген, сервер орнатқан барлық айнымалылар қоршауын, сонымен бірге командалық үрдісор орнатқан барлық мұраланған айнымалыларды шығаратын, Perl-де жазылған CGI сценарийіне мысал келтірейік.

5.1- листинг. Айнымалалар қоршауы мәндерін шығару.

print "Content-Type: text/html\n\n

<HTML><HEAD><TITLE></title></head><BODY>\n

<p>Айнымалылар қоршауы:<p>\n";

foreach (keys %ENV) {print "$_: $ENV{$_}<br>\n" }

print "</body></html>";

Бұл айнымалылардың барлығы біздің CGI-программада қолданылып, тіпті өзгертілуі де мүмкін. Бірақ, бұл өзгертулер программаны іске қосатын веб-серверге әсер етпейді.

CGI кіріс мәліметтерді стандартты stdin енгізу ағынынан немесе айнымалылар арасынан алады да, өз жұмысының нәтижесін стандартты шығару ағыны stdout жібереді.

§ Стандартты енгізу ағыны – программа (скрипт) үнсіз келісім бойынша кіріс ақпараттарды алатын орын. Әдетте бұл пернетақта болады, бірақ оны өзгерте отырып, программа кіріс ақпараттарды файлдан, сокеттен немесе басқа программаның шығыс ағынынан алатындай етуге болады.

§ Айнымалылар қоршауы (Переменные окружения) (environment variables) – жүйе және сервер үшін анықталған, CGI орындалатын айнымалылар.

§ Стандартты шығару ағыны (stdout) - программа (скрипт) өз жұмысының нәтижелерін шығаратын орын. Әдетте бұл экран болады, бірақ оны файлға, сокетке, басқа программаның кіріс ағынына, принтерге т.б. өзгертуге болады.

CGI-ді параметрлерсіз шақыру

Ағымдағы мерзімді шығаратын қарапайым скрипт:

#!/bin/sh echo Content-type: text/html echo echo "<h2>Today is " date echo "</h2>"

HTML құжатында бұған сілтеме келесі түрде жазылады:

<a href="/cgi-bin/examples/today.cgi">

Ескерту: шығарылатын нәтиже – шығарылатын құжаттың тақырып қатарының типін көрсетуді ұмытпау керек. Бұл мысалдағы екінші және үшінші қатар.

echo Content-type: text/html echo

мұндағы Content-type: - шығарылатын құжаттың типі (text/html, image/gif, image/jpeg және т.б.).
Бос қатар тақырып қатарының аяқталып, ары қарай құжаттың өзі орналасатындығын білдіреді.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: