Oorspronklik was die web meestal net 'n stelsel om HTTP-versoeke te stuur en te ontvang. 'N Blaaier sal vra om 'n bladsy met 'n HTTP-versoek te stuur en die bediener stuur die bladsy na die blaaier.
Die bladsy self bevat dinge soos verwysings na prente waarna die blaaier met meer HTTP-versoeke sou vra. Dit was alles baie eenvoudig. Maar dit het nie toegelaat dat die bediener verwerk nie. As gevolg hiervan is die Common Gateway Interface (CGI) ontwikkel.
Met CGI kan 'n blaaier 'n versoek met insette na die bediener stuur, en 'n CGI-program stuur 'n webblad wat verwerk is gebaseer op die gestuurde insette. Neem 'n vroeë voorbeeld: 'n CGI-program met inligting oor chemiese verbindings.
Die blaaier sal 'n versoek stuur na die CGI-program met die verbinding waaroor die gebruiker inligting wou hê, en die program sal 'n bladsy met inligting oor die verbinding terugstuur.
Uiteindelik is bediener-programmeringstale soos PHP en Python ontwikkel, maar in die dae was CGI al wat daar was.
Tog het CGI 'n unieke vermoë: dit was taalafhanklik. As die bediener die program kon uitvoer, kan CGI dit hanteer. Dit kan dus 'n saamgestelde C ++ -program wees, of 'n geïnterpreteerde Perl-skrif of omtrent alles anders.
CGI-programme is deesdae meestal erfenis. Maar daar is tye dat dit steeds die beste manier is om 'n probleem op te los. Kom ons kyk na die omgewingveranderlikes wat die ruggraat van die stelsel is.
As u CGI-programmering oorweeg, sal die volgende veranderlikes baie nuttig wees vir die hantering van verskillende bedienerversoeke vir die verwerking van vormdata, wat tot kragtige en veelsydige programme lei..
Om toegang tot hierdie veranderlikes te verkry, moet u 'n inskrywing ophaal uit 'n reeks waardes wat na die omgewing verwys. Byvoorbeeld, in Perl, sal u waardes in die $ ENV-skikking opspoor deur gebruik te maak van omgewingsveranderlike sleutels soos die volgende:
In bogenoemde kode-uittreksel verwys env_var na 'n omgewingsveranderlike sleutel of string-agtige SERVER_NAME. Ander programmeertale het hul eie stelsels vir die bestuur van omgewingsveranderlikes. Kontroleer die verwysing vir u spesifieke taal.
Hier is die CGI-veranderlikes en wat hulle doen:
Sommige webbedieners beskerm toegang tot CGI-skripte met behulp van magtiging. Die AUTH_TYPE-veranderlike verwys na die magtigingstipe wat die bediener gebruik om gebruikers te verifieer.
Byvoorbeeld, 'n moontlike waarde vir hierdie veranderlike kan Basies wees met verwysing na Basiese verifikasie. Let daarop dat nie alle bedieners magtiging ondersteun nie.
CONTENT_LENGTH gee die lengte van die inhoud wat deur die versoek gelewer is, die aantal grepe. As die lengte onbekend is, sal die veranderlike op -1 gestel word.
Die CONTENT_TYPE-veranderlike bevat die tipe lêer wat deur die versoek teruggestuur word.
As 'n webblad byvoorbeeld gevra word, sal die CONTENT_TYPE-veranderlike op die MIME-tipe teks / html gestel word.
As u wil weet watter weergawe van die CGI-spesifikasie die bediener hanteer, kan u die GATEWAY_INTERFACE navraag doen. Hierdie veranderlike sal help om te verseker dat u die regte weergawe van die spesifikasie en geldige opdragte gebruik.
Net soos CONTENT_TYPE die gegewens of die MIME-tipe verskaf wat verskaf word, bevat die HTTP_ACCEPT al die moontlike MIME-tipes wat 'n kliënt wat die versoek rig, kan aanvaar. Die lys met soorte word deur kommas geskei.
Die HTTP_USER_AGENT gee die naam van die program wat 'n kliënt gebruik om die versoek te stuur.
Byvoorbeeld, as 'n gebruiker 'n CGI-skrip uitvoer van Mozilla Firefox, sal die HTTP_USER_AGENT aandui dat die gebruiker via Firefox 'n versoek aan die webbediener gerig het..
Die PATH_INFO-veranderlike bevat addisionele inligting wat na die CGI-skripnaam gesien kan word.
As u byvoorbeeld www.placeholder.com/cgi-bin/hello.pl/index.html uitvoer, dan is die PATH_INFO hiervoor die karakters wat na die CGI-skripnaam of /index.html kom in hierdie voorbeeld..
As u 'n adres van 'n CGI-skrif in 'n webblaaier tik, tik u gewoonlik 'n virtuele pad in wat na 'n fisiese plek op die bediener gekarteer is..
As u byvoorbeeld na http://www.somewebsite.com/cgi-bin/index.cgi gaan en u die veranderlike PATH_TRANSLATED navraag doen, kry u die werklike fisiese pad. As u op 'n gedeelde Unix-bediener is, kan dit /home/placeholder/public_html/cgi-bin/index.cgi wees.
Dit is gereeld om navraaginligting na 'n vraagteken by 'n URL te voeg. Vir die URL http://www.placeholder.com/cgi-bin/hello.cgi?name=Leroy&uitroep = waar, as u die QUERY_STRING aanvra, sal dit terugkeer in name = Leroy&uitroep = waar terugbesorg word.
Die REMOTE_ADDR-veranderlike gee die IP-adres van die kliëntrekenaar wat die versoek rig. In wese word REMOTE_ADDR REMOTE_HOST na 'n IP-adres opgelos.
Webbedieners aanvaar voortdurend beide verbindings en versoeke van kliënte. Die REMOTE_HOST-veranderlike verwys na die gasheernaam van die kliënt wat die versoek uitvoer.
As u webhost byvoorbeeld 'n versoek van webhost2.com aanvaar, dan sal REMOTE_HOST met webhost2.com gevul word..
Die REMOTE_IDENT-veranderlike stoor die gebruikers-ID met die CGI-skrip. Die gebruiker-ID word slegs gestoor as die identiese proses verloop, aangesien ident 'n antwoord lewer wat nie net gebruikers-ID-inligting bevat nie, maar ook die naam van die besturingsprogram wat die script gebruik.
As u die REMOTE_USER-veranderlike navraag doen, sal die gebruikersnaam-inligting gegee word van die entiteit wat die versoek rig. Dit is slegs geldig as verifikasie aangeskakel is.
Die REQUEST_METHOD gee die tipe HTTP-versoek voltooi wat waardes soos GET, POST en PUT insluit.
As u eerder die virtuele pad van die skrip wil uitvoer, wil u die SCRIPT_NAME-veranderlike vra.
Byvoorbeeld, as u die skrip http://www.placeholder.com/cgi-bin/ping.sh gebruik en SCRIPT_NAME ophaal, kry u die virtuele pad van die script of /cgi-bin/ping.sh.
Die SERVER_NAME-veranderlikes gee die volle naam van u bediener.
As u byvoorbeeld na hierdie veranderlike navraag doen, is die resultaat van die webwerf se domeinnaam – soos www.placeholder.com.
Enige bediener wat op die web loop, het sowel 'n adres as 'n poort. Die bediener gebruik 'n poort om verbindings te aanvaar en na versoeke te luister. Die standaardpoort is 80, maar dit kan ander getalle wees – veral vir gespesialiseerde toepassings. As u die SERVER_PORT-veranderlike navraag doen, sal dit die waarde van die luisterpoort tot gevolg hê.
U kan uitvind watter protokol 'n bediener gebruik om versoeke te hanteer.
Byvoorbeeld, as die bediener waarmee u werk, die HTTP-protokol gebruik, sal dit 'n string soos "HTTP / 1.1" terugstuur, wat beteken dat die bediener HTTP-weergawe 1.1 gebruik. Die string wat teruggestuur word, is basies in die formaatprotokol / weergawe.
Die SERVER_SOFTWARE-omgewingsveranderlike bevat die naam en weergawe van die sagteware wat op die webbediener loop.
Byvoorbeeld, as u die waarde van hierdie veranderlike uitvoer en u gebruik 'n weergawe van Apache, kry u moontlik iets soos die volgende:
Een van die eerste stappe wat u kan neem om CGI of die HTTP-protokol te verstaan, is om u vertroud te maak met die onderliggende veranderlikes en sintaksis. Dit sluit die omgewingsveranderlikes in wat pas uiteengesit is.
Alhoewel CGI deesdae selde gebruik word, gebruik baie huidige webontwikkelingstale soos PHP ook baie van hierdie veranderlikes. As gevolg hiervan, sal u dit ook help om robuuste programme te skryf, selfs vir huidige webontwikkelingstale.