HTTP si CGI

Nici o comunicare în lumea calculatoarelor - fie ea oricît de simplă - nu se poate desfăsura fără un protocol. În cursul anilor '90 s-a cristalizat protocolul utilizat pe majoritatea serverelor Web la ora actuală pentru comunicatiile dintre servere si programele (numiti si clienti) care le accesează: HTTP - Hypertext Transfer Protocol. Acesta este protocolul de bază folosit iar serverele care îl utilizează se mai numesc si servere HTTP. Ca orice protocol pe Internet, el este, pe de o parte, un mecanism extrem de complex, iar pe de altă parte un dialog simplu bazat pe principiul cerere/răspuns: programul care cere (clientul) emite o cerere spre server (după o secventă initială de conectare). Cererea pe WWW porneste în general începînd de la un (sau din interiorul unui) document în format HTML si poate să ia o mare varietate de forme: de la o cerere simplă (aducerea unui alt document), prin cereri de căutare pînă la completarea form-urilor HTML. Mai mult: datele transferate de către protocol pot veni în formate diferite, de la text simplu pînă la imagine sau videoclip, iar pentru ca situatia să fie si mai complicată, trebuie să tinem cont si de faptul că datele ce compun un document se pot afla fizic pe calculatoare diferite, putînd fi accesate (eventual) doar prin alte protocoale de comunicatie, nu direct via HTTP.

Pentru a ordona putin lucrurile, comunicatia primordială se derulează între clientul care a initiat cererea si serverul Web accesat. Serverul la rîndul lui are la dispozitie mai multe mecanisme pentru a transfera mai departe cererea clientului; dintre acestea, la ora actuală cel mai important (si cel mai indicat) este cel specificat de standardul CGI (Common Gateway Interface). CGI specifică exact sub ce formă trebuie date mai departe informatiile sosite ca cerere de la client.

Cui? Programele care receptionează cererile se numesc programe CGI: sînt practic programe activate pe server, indirect, de către utilizatori externi, gratie caracterului interactiv (dinamic) al documentelor HTML. Aceste programe pot fi scrise în principiu în orice limbaj de programare de uz general (de la C la Visual Basic), dar modul cel mai popular este scrierea unor script-uri (programe…?) în shell, Perl sau Tcl. CGI, în esentă, specifică modul în care trebuie să se facă transferul cererilor sosite la serverul Web (prin HTTP) către programele CGI. Acestea pot rezolva uneori direct o cerere, alteori doar "pun la lucru" alte programe din server, alimentîndu-le pe acestea cu parametrii - tradusi în forma de care au nevoie acestea. Din punctul de vedere al serverului Web, datele (practic niste string-uri, venite din exterior) care activează programele CGI sînt potential periculoase: din această cauză rularea programelor CGI se face sub un control strict.

Standardul CGI (întretinut actualmente de NCSA) permite astfel elaborarea programelor care realizeză interfata dintre serverul HTTP si functia pe care trebuie să o execute. Programele CGI răspund de rezolvarea cererilor clientilor; de exemplu, căutarea unui document într-o bază de date (chiar una specială).

Răspunsul programului CGI după executarea cererii poate să cuprindă fie doar o informatie relativă la locul documentelor căutate (si în acest caz clientul le va accesa prin altă metodă) fie date finale. Programele răspund în general serverului Web, care apoi redirectează răspunsul prin protocol HTTP spre client. Sînt însă si programe CGI care, pentru a optimiza procesul, "discută" direct cu clientul prin HTTP (mai ales din considerente de timp - aici timpul este foarte pretios!). Programele CGI pot transfera spre client date de aproape orice format: text, imagine, clip audio, etc. Formatul datelor efectiv transmise în final prin protocol HTTP este asemănător formatului MIME (Multipurpose Internet Mail Extensions) utilizat în cadrul postei electronice.

Astfel specificatia CGI dă posibilitatea celor care configurează servere să implementeze usor diferite căi de iesire/intrare din domeniul strict controlat de componentele principale ale unui server WEB-HTTP, prin programe numite gateway.


(C) Copyright Computer Press Agora