CGI står for Common Gateway Interface og beskriver standard-grænsefladen (defineret af W3C, WWW Consortium) imellem en Web server og et eksternt program.
Følgende scenario forklarer, hvorledes CGI-scripts bruges:
- En bruger henter via internettet en hjemmeside (et HTML-dokument) hjem på sit system med en Web-browser.
- Brugeren udfylder en formular som er defineret i dette HTML-dokument. Dette kunne fx. være en bestilling af en SuperUsers T-shirt (størrelse, antal, etc.)
- Efter at have udfyldt formularen trykker brugeren på knappen “SEND”.
- I HTML-dokumentet, hvor formularen findes, er defineret, hvad der skal ske når brugeren trykker på “SEND”. Her står hvilket program (CGI-script) på Web-server maskinen, der skal
modtage de data, brugeren har tastet ind.
- Når brugeren har trykket på “SEND” overføres data til Web-serveren (via Internet eller Intranet) og programmet (CGI-scriptet) startet med brugerens indtastede data som parametre
(eller environment-variable).
- Programmet (CGI-scriptet) afvikles og kan gøre med data som det ønsker. Ofte gemmes disse i en database, men det kunne også være, at de indtastede data skulle bruges som søge-data i
en database. Et CGI-scripts kan udføre hvad som helst på Web-server maskinen.
- Undervejs som CGI-scriptet afvikler, kan det opbygge et HTML-dokument, som kan indeholde information til brugere (fx. fundet i en database) eller det kan indeholde fejlmeddelelser, hvis
dette er påkrævet.
- Når CGI-scriptet er afviklet sendes det dynamisk opbyggede HTML-dokument til brugerens Web-browser. Hermed har brugeren været i dialog med det centrale system, og fået udført en
operation på dette.
- CGI-scripts kan skrives i et vilkårligt programmeringssprog, men ofte anvendes Perl. Af andre sprog anvendt til CGI kan nævnes: Python, PL/SQL,
shellscripts, C og PHP.
|
CGI-teknologien giver ingen bindinger til hverken valg af Web-browser eller Web-server, da det er en meget velafprøvet standard. Det, der ofte er den store
udfordring i at designe velfungerende CGI-baserede applikationer, er at både klient og server er tilstandsløse. Derfor skal alle levende data hele tiden overføres mellem klienten og serveren
og vice versa.Hvis brugeren har indtastet navn og adgangskode, så skal disse oplysninger transporteres frem og tilbage, indtil brugeren er færdig med sin opgave. Der findes i HTTP-protokollen
to metoder til dataoverførelse, nemlig ‘GET’ og ‘POST’. ‘GET’ anvendes af f.eks. Alta Vista’s søgemaskine. Hvis man søger efter ordet ‘superusers’, vil den første side
med søgeresultater have URL’en: http://www.altavista.com/cgi-bin/query?pg=
q&kl=XX&q=superusers&search=Search
Alle de nødvendige oplysninger til søgemaskinen er indeholdt i denne addresse, nemlig:
- Hvor: www.altavista.com
- Hvilket program: /cgi-bin/query
- Data (parametre): pg=q kl=XX q=superusers search=Search
Fordelen ved denne metode, er at man kan bookmark’e en søgning, og den bliver så gemt med alle nødvendige data. Ulempen er, at alle oplysninger er synlige i URL’en og kan direkte
manipuleres. ‘POST’-metoden skjuler disse oplysninger i HTTP-protokollens interne kommunikation. Som nævnt ovenfor er kommunikationen tilstandsløs. Dette kan man komme udenom med brug af
såkaldte cookies. En cookie er en bid information, der gemmes i browseren og som serveren kan anmode om. Cookies er af natur usikre, da det er muligt for
andre webservere at læse indholdet. |