La Common Gateway Interface (CGI) è un’in­ter­fac­cia di server web che consente lo scambio di dati stan­dar­diz­za­to tra ap­pli­ca­zio­ni esterne e server. Ap­par­tie­ne alle prime tec­no­lo­gie di in­ter­fac­cia di Internet e finora è stata am­pia­men­te uti­liz­za­ta. Con la CGI le pagine HTML non devono essere com­ple­ta­men­te di­spo­ni­bi­li sul server, vengono invece create in maniera dinamica non appena un utente invia una richiesta adeguata tramite sito web.

Funzioni e uso

Quando un utente inserisce una voce in un sito web questi dati non vengono inoltrati di­ret­ta­men­te al server, ma devono prima essere mo­di­fi­ca­ti. Tale ela­bo­ra­zio­ne viene ef­fet­tua­ta at­tra­ver­so un software esterno (per esempio uno script CGI) e non di­ret­ta­men­te tramite server web. Tramite l’in­ter­fac­cia stan­dar­diz­za­ta CGI il programma trasmette i dati al server che può quindi vi­sua­liz­za­re le in­for­ma­zio­ni appena create in HTML. I programmi CGI si trovano so­li­ta­men­te in una cartella dedicata sul server web.

Lo script CGI può essere scritto in diversi linguaggi di pro­gram­ma­zio­ne. La Common Gateway Interface fa in modo che server web e script possano co­mu­ni­ca­re tra loro in­di­pen­den­te­men­te dal lin­guag­gio uti­liz­za­to.

Casi di impiego della Common Gateway Interface

  • Carrelli: se un cliente inserisce dei prodotti nel suo carrello d’acquisto online, queste in­for­ma­zio­ni vengono elaborate dallo script CGI e poi inviate al server.
  • Commenti: l’utente compila un campo commenti. Cliccando su “Invia” il suo testo viene trasmesso allo script CGI che a sua volta lo inoltra al server.
  • Formulari: anche nel caso di moduli online, per esempio can­di­da­tu­re o messaggi, i dati inseriti vengono prima elaborati dalla Common Gateway Interface e di seguito trasmessi al server.
  • Sta­ti­sti­che relative ai siti web: quando sui siti web vengono vi­sua­liz­za­ti dati sul traffico, la tec­no­lo­gia sot­to­stan­te utilizza in molti casi la CGI.
  • Server Side Include: con le Common Gateway Interface è possibile caricare di­na­mi­ca­men­te il contenuto del testo nel sito web.
  • Test di software: gli svi­lup­pa­to­ri possono uti­liz­za­re gli script CGI per testare la fun­zio­na­li­tà di ap­pli­ca­zio­ni online esterne per siti web tramite il browser.

Anche un utente senza co­no­scen­ze di pro­gram­ma­zio­ne riconosce sem­pli­ce­men­te dall’URL se viene inserito uno script. At­tra­ver­so una de­ter­mi­na­ta stringa, che viene co­di­fi­ca­ta, il server riceve tutte le in­for­ma­zio­ni rilevanti dallo script. Si può di­stin­gue­re fra tre modalità di tra­smis­sio­ne delle in­for­ma­zio­ni:

  • QUERY_STRING: questo metodo si utilizza so­prat­tut­to per le richieste degli utenti.
  • PATH_INFO: tramite questo metodo vengono trasmesse in­for­ma­zio­ne con­te­stua­li del sito web.
  • Stdin: in questo modo vengono elaborati altri input dell’utente.

Vantaggi e svantaggi della Common Gateway Interface

No­no­stan­te sia datata, la Common Gateway Interface è tra le in­ter­fac­ce più uti­liz­za­te nello sviluppo di siti web. Questa tec­no­lo­gia, oltre a molti vantaggi, presenta anche degli svantaggi.

Vantaggi

La CGI è un sistema semplice ed efficace per generare contenuti dinamici per i siti web. Allo stesso tempo le ap­pli­ca­zio­ni CGI non devono essere salvate sul server, in modo che nessuna risorsa venga uti­liz­za­ta inu­til­men­te. Dal punto di vista pratico un elemento a favore della Common Gateway Interface è la com­pa­ti­bi­li­tà con molti linguaggi di pro­gram­ma­zio­ne e di con­se­guen­za la facile in­te­gra­zio­ne nelle in­fra­strut­tu­re esistenti. Non da ultimo, essendo gratuita, non implica costi di utilizzo ed è subito fruibile per ogni svi­lup­pa­to­re.

Svantaggi

Uno dei prin­ci­pa­li punti deboli della Common Gateway Interface è che sebbene il carico del server sia ridotto, i tempi di risposta dell’ap­pli­ca­zio­ne CGI sono a volte molto lunghi, perché il programma deve essere riavviato a ogni nuovo in­se­ri­men­to. So­prat­tut­to per i siti web ad alto traffico può diventare un problema il fatto che i server sup­por­ti­no spesso solo un de­ter­mi­na­to numero di ap­pli­ca­zio­ni CGI e che le ulteriori richieste in entrata vengano messe in attesa o respinte.

La Common Gateway Interface, come anche altre in­ter­fac­ce, può rap­pre­sen­ta­re un rischio per la sicurezza se non viene impostata una pro­te­zio­ne adeguata. Tramite CGI i programmi esterni hanno teo­ri­ca­men­te un accesso completo ai dati del server web. Devono quindi essere definite chiare li­mi­ta­zio­ni di modo che uno script CGI non possa causare danni.

Al­ter­na­ti­ve alla Common Gateway Interface

Negli scorsi anni sono state svi­lup­pa­te molte altre tec­no­lo­gie d'in­ter­fac­cia basate sulla CGI che cercano però di eliminare il suo prin­ci­pa­le punto debole, ossia il fatto che per ogni richiesta di un utente debba essere ri­ca­ri­ca­to uno script.

ASP (Active Server Pages): ASP è stato ini­zial­men­te svi­lup­pa­to da Microsoft per i suoi server, ora però è di­spo­ni­bi­le per molti server. L’in­ter­pre­te ASP è integrato nei server web, quindi non è ne­ces­sa­rio avviare un nuovo processo per il suo utilizzo. I comandi ASP possono essere scritti di­ret­ta­men­te nelle pagine HTML. Come la CGI anche ASP può essere uti­liz­za­to con diversi linguaggi di pro­gram­ma­zio­ne.

PHP: PHP, assieme a Perl, ap­par­tie­ne ai linguaggi di scripting più diffusi nel web. Molto di ciò che può essere raggiunto da uno script CGI è rea­liz­za­bi­le anche con PHP. L’in­ter­pre­te PHP però è integrato di­ret­ta­men­te nei server web.

Col­d­Fu­sion: Col­d­Fu­sion è stato ini­zial­men­te svi­lup­pa­to per Windows, ora però è di­spo­ni­bi­le anche per molte piat­ta­for­me Unix. L’in­ter­pre­te Col­d­Fu­sion è integrato nei server web, come avviene nelle al­ter­na­ti­ve CGI già pre­sen­ta­te. Le pagine HTML possono essere mo­di­fi­ca­te con i tag presenti o propri elementi di controllo. Inoltre Col­d­Fu­sion offre agli svi­lup­pa­to­ri una serie di fun­zio­na­li­tà standard.

FastCGI: con FastCGI le richieste dinamiche dei server web possono essere mo­di­fi­ca­te di­ret­ta­men­te tramite un’in­ter­fac­cia Perl, senza dover avviare un nuovo processo. FastCGI è am­pia­men­te com­pa­ti­bi­le con CGI e viene sup­por­ta­to da molti server web.

Vai al menu prin­ci­pa­le