L’interfaccia CGI ( Common Gateway Interface) descrive come avviene lo scambio di dati tra il browser e le applicazioni server side.
La conoscenza dell’interfaccia CGI serve non solo per sviluppare applicazioni CGI (nel linguaggio della shell di Linux, in Perl o in qualsiasi linguaggio di programmazione) ma anche per capire come avviene lo scambio di dati tra il browser e le applicazioni server side realizzate con tecnologie più recenti come PHP,ASP o JSP. Queste tecnologie offrono meccanismi di livello più alto che nascondono in parte l’interfaccia CGI, che però rimane la stessa.
Le applicazioni server side (applicazioni CGI o pagine che contengono degli script, sul server) sono applicazioni in esecuzione sul server Web che possono ricevere un input dall’utente e creare pagine Web in risposta dinamicamente.
L’utente normalmente inserisce i dati tramite un modulo; i dati vengono inviati all’applicazione sul server che li elabora e restituisce un documento HTML con la risposta.
Se l’URL specificato bella richiesta del browser si riferisce a una applicazione server side:
- il server, prima di inviare la risposta esegue l’applicazione
- l’applicazione produce una risposta (in genere una pagina web)
- il server invia la risposta.
Il browser può inviare dati all’applicazione server side:
- inserendoli in un modulo, che richiede l’esecuzione dell’applicazione con l’attributo action
- accodandoli all’URL dell’applicazione, nel formato richiesto dall’interfaccia
Quando viene richiesta l’esecuzione di un’applicazione server side il server predispone i valori di opportune variabili d’ambiente che vengono usate dall’applicazione come input; le variabili più comuni sono:
REQUEST_METHOD metodo usato nella richesta
QUERY_STRING dati inviati con il metodo GET
CONTENT_LENGHT quantità di dati inviati via metodo post
DOCUMENT_ROOT directory root del server
HTTP_USER_AGENT tipo di browser usato dall’utente
REMOTE_ADDR indirizzo ip del client che ha effettuato la richiesta
REMOTE_HOST nome di dominio del client che effettua la richesta
SERVER_NAME nome di dominio del server
SERVER_SOFTWARE nome e versione del software installato nel server web
SERVER_PORT porta TCP in cui è attivo il servizio http

