Attraverso il CGI (Common Gateway Interface), è possibile deviare da quel che è il normale protocollo d’esecuzione di un server http. Questa particolare interfaccia permette infatti di eseguire script differenti dai soliti linguaggi web, richiamandoli da browser, per venire eseguiti direttamente sul server. Si distingue dal normale iter in cui il server limita la propria funzione alla trasmissione di pagine web. In questo contesto è il client che attraverso il CGI avvia da remoto script o applicazioni sul server.

Di default la cartella per l’esecuzione degli applicativi è cgi-bin. Ma può essere modificata dal file httpd.conf di apache:

Nel file httpd.conf le parti in cui si cambiano i percorsi di default per la directory cgi-bin sono:

 
<IfModule alias_module>
 
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"
 
</IfModule>
 
<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock "logs/cgi.sock"
</IfModule>
 
#
# "C:/xampp/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "C:/xampp/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

Un esempio di script python 3.2 eseguito lato server attraverso l’interfaccia cgi-bin è questo:

#!C:\Python32\python.exe
print("Content-Type: text/html\n")
print("""\
<html>
<body>
<h1>Hello World Rocco!</h1>
<br/>
<h3>Hackers Tribe Rules!</h3>
</body>
</html>
""")

Lo script oltre a eseguirsi sul server può restituire al client una risposta html per fornire esiti d’esecuzione o altri dati.
In prima linea nel file sorgente è necessario specificare il percorso all’interprete di python installato sul server. Nell’esempio sopra al client viene restituita una pagina html.

L’indirizzo dello script esempio.py posto in cgi-bin sarà qualcosa simile a:
http://server-remoto.com/cgi-bin/esempio.py

L’interfaccia CGI garantisce una migliore integrazione fra ambiti web e ambiti strettamente correlati al “locale”, cioè circoscritti alla macchina o alla rete LAN.