Common Gateway Interface (CGI) är ett standardprotokoll för webbservrar för att köra externa program, vanligtvis skript och returnera utgången till webbklienten (vanligtvis en webbläsare). Det fungerar som en bro mellan webbservern och andra applikationer. Här är en uppdelning av hur det fungerar:
1. Kundförfrågan: En användare interagerar med en webbsida (t.ex. fyller i ett formulär, klickar på en länk) som utlöser en begäran till webbservern. Denna begäran innehåller ofta parametrar eller data som skriptet behöver behandlas.
2. Server får begäran: Webservern tar emot begäran och identifierar att den måste hanteras av ett CGI -skript. Detta bestäms vanligtvis av URL:n (t.ex. en ".cgi" -förlängning) eller serverkonfiguration.
3. Server kör skript: Servern åberopar CGI -skriptet. Detta innebär att skapa en ny process för att skriptet ska köras, säkerställa säkerhetsisolering mellan skriptet och själva servern. Detta är avgörande, eftersom ett komprometterat CGI -skript potentiellt kan påverka hela servern.
4. Skriptprocesser Begäran: Skriptet tar emot inmatning från servern, inklusive klientens förfrågningsparametrar (som formulärdata), miljövariabler (som användarens IP -adress) och standardinmatning. Den bearbetar sedan denna information och genererar utdata.
5. Skript skickar svar: Skriptet skickar sin utgång tillbaka till webbservern via Standard Output (STDOUT) och standardfel (STDERR). Utgången inkluderar vanligtvis HTTP -rubrikerna (statuskod, innehållstyp etc.) och det faktiska innehållet som ska visas i webbläsaren (t.ex. HTML, bilder, text).
6. Server skickar svar till klienten: Webservern tar emot utgången från skriptet, kontrollerar HTTP -rubrikerna och skickar svaret tillbaka till klientens webbläsare. Webbläsaren gör sedan det mottagna innehållet.
Nyckelaspekter och begränsningar:
* Säkerhet: Eftersom CGI -skript körs som separata processer är noggranna säkerhetsåtgärder avgörande. Alla sårbarheter i ett CGI -skript kan utnyttjas.
* Prestanda: Att skapa en ny process för varje begäran kan vara resurskrävande, särskilt under tung belastning. Detta leder till långsammare prestanda jämfört med mer moderna tillvägagångssätt.
* Språksoberoende: CGI -skript kan skrivas på alla programmeringsspråk som kan producera den nödvändiga utgången. Denna flexibilitet är en betydande fördel.
* Miljövariabler: Webservern tillhandahåller en uppsättning miljövariabler till CGI -skriptet och erbjuder viktig kontextuell information.
* rubriker: Skriptet är ansvarigt för att mata ut rätt HTTP -rubriker för att indikera innehållstypen (t.ex. `text/html`,` image/jpeg`).
Moderna alternativ:
Medan CGI fortfarande är funktionellt, har den till stor del ersatts av effektivare och säker teknik som:
* Fastcgi: Förbättrar prestandan genom att hålla skriptprocesserna vid liv och undvika omkostnader för varje begäran.
* wsgi (python): Ett standardiserat gränssnitt mellan Python -webbapplikationer och webbservrar.
* CGI -alternativ för andra språk: De flesta moderna webbramar erbjuder inbyggda mekanismer för hanteringsförfrågningar mer effektivt än att förlita sig direkt på CGI.
Sammanfattningsvis ger CGI ett grundläggande sätt för webbservrar att interagera med externa program men lider av prestanda- och säkerhetsutmaningar som har lett till dess nedgång till förmån för mer moderna tillvägagångssätt. Att förstå CGI är fortfarande till hjälp för att förstå historien och underliggande principer för utveckling av webbapplikationer.