De meeste webservers vertrouwen op een gestandaardiseerd mechanisme om dynamische inhoud uit te voeren. Dat mechanisme is de Common Gateway Interface of CGI. Het is geen magie. Het is een mappenstructuur en een reeks regels die een server vertellen dat hij moet stoppen met het behandelen van code als statische tekst en deze moet gaan behandelen als een uitvoerbaar programma.
De sleutel is een specifieke submap met de naam cgi-bin. Wanneer u een webserver instelt, maakt u deze map aan in uw documentroot. De server is geconfigureerd om die map nauwlettend in de gaten te houden. Elk bestand dat wordt opgevraagd bij cgi-bin veroorzaakt ander gedrag dan een standaard HTML-pagina.
In plaats van het bestand te lezen en de onbewerkte inhoud ervan naar uw browser te sturen, voert de server het bestand uit. De output die door die uitvoering wordt gegenereerd, wordt daadwerkelijk aan de klant geleverd. Hierdoor kan de server code direct uitvoeren en reacties genereren op basis van gebruikersinvoer, databasequery’s of andere dynamische logica.
De programma’s die in deze map zijn opgeslagen, zijn doorgaans ofwel gecompileerde binaire bestanden, zoals die geproduceerd door een C-compiler, ofwel geïnterpreteerde scripts. Eén taal domineert deze ruimte: PERL. Het is al tientallen jaren de ruggengraat van CGI-scripting omdat het de tekstverwerking en serverinteractie met opmerkelijk gemak afhandelt.
Denk eens aan een concreet voorbeeld. U typt deze URL in uw browser: https://www.howstuffworks.com/cgi-bin/search.pl.
De server ziet het pad. Het herkent dat search.pl zich in de map cgi-bin bevindt. De broncode wordt niet naar u verzonden. Het voert search.pl uit. Het PERL-script verwerkt het verzoek (misschien door een zoekindex op te vragen) en retourneert het HTML-resultaat. Uw browser geeft dat resultaat weer. De broncode raakt nooit uw scherm.
Wil je dit zelf proberen? Het is mogelijk, maar je hebt twee dingen nodig.
Ten eerste moet u een programmeertaal kennen die geschikt is voor CGI. C en PERL zijn de traditionele standaarden. U moet begrijpen hoe u HTTP-headers uitvoert en serverinvoer afhandelt.
Ten tweede hebt u toegang nodig tot een webserver die CGI-uitvoering ondersteunt. Als u een betaalde webhostingservice gebruikt, beschikt u waarschijnlijk al over deze mogelijkheid. De meeste gedeelde hostingplannen bevatten standaard CGI-ondersteuning. Controleer de documentatie van uw hostingprovider om dit te bevestigen. Mogelijk moet u uw scripts specifiek naar de map cgi-bin uploaden.
Als u geen hostingaccount heeft, kunt u een webserver op uw thuiscomputer installeren. Hierdoor heeft u totale controle. U kunt in realtime experimenteren met verschillende configuraties en fouten opsporen. Het is ingewikkelder dan het gebruik van een gehoste service. U moet zelf de serversoftware, beveiliging en machtigingen beheren. Maar de leercurve is op een nuttige manier steil. U zult precies begrijpen hoe het web onder de motorkap werkt.
Deze opstelling werkt omdat de server expliciet wordt verteld dat hij code in die specifieke map moet vertrouwen en uitvoeren. Buiten cgi-bin behandelt de server bestanden als statische gegevens. Binnenin zijn het programma’s. Dat onderscheid maakt dynamische webapplicaties mogelijk.
De server voert het programma uit en stuurt de uitvoer naar de browser. De broncode blijft verborgen.
Is het de modernste manier om webapplicaties te bouwen? Nee. Moderne raamwerken gebruiken vaak verschillende architecturen. Maar CGI legde het patroon vast. Het bewees dat servers externe programma’s konden uitvoeren om inhoud te genereren. Elke dynamische site die u vandaag de dag bezoekt, vindt zijn oorsprong in deze eenvoudige directorystructuur.
De grens tussen statische en dynamische inhoud wordt bepaald door de configuratie van de server. De **







































