Common Gateway Interface: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Collegamenti esterni: Aggiunto il template "FOLDOC"
Etichette: Modifica da mobile Modifica da applicazione mobile Modifica da applicazione Android
 
(79 versioni intermedie di 53 utenti non mostrate)
Riga 1:
[[File:Common Gateway Interface logo.svg|thumb|alt=Il logo ufficiale CGI dall'annuncio delle specifiche |Il logo ufficiale CGI dall'annuncio delle specifiche]]
{{stub informatica}}
In [[informatica]] '''Common Gateway Interface''' (acronimosigla '''CGI''', in italiano: ''"interfaccia comune''", nel senso di standard, ''"per [[Gateway (informatica)|gateway'']]"), è una tecnologia [[standard (informatica)|standard]] usata dai [[web server]] per interfacciarsi con [[applicazione web|applicazioni]] esterne generando contenuti [[web dinamico|web dinamici]].
 
Ogni volta che un [[client]] richiede al [[web]]-[[ server]] un [[Uniform Resource Locator|URL]] corrispondente ada un documento in puro [[HTML]], gli viene restituito un documento statico (come un [[file di testo]]); se l'URL corrisponde invece ada un [[programma (informatica)|programma]] CGI, il server lo [[esecuzione (informatica)|esegue]] in tempo reale, generando dinamicamente [[informazione|informazioni]] per l'utente.
 
==Descrizione==
Un programma (o uno [[script]]) CGI può essere scritto in qualsiasi linguaggio di programmazione ([[C (linguaggio)|C]]/[[C++]], [[Perl]], [[PHP]], [[Visual Basic]], [[Tcl/Tk]], [[AppleScript]], ecc.), la scelta si basa sul sistema su cui girerà; il [[Perl]] è comunque il linguaggio più comunemente utilizzato.
=== Utilizzo ===
Il CGI è la prima forma di [[Elaborazione dati|elaborazione]] [[lato server]] implementata: quando a un [[web server]] arriva la richiesta di un documento CGI (solitamente con estensione ''.cgi'', ''.exe'' o ''.pl'') il server esegue il programma richiesto e al termine invia al web browser l'output del programma. Il file CGI è un semplice programma già [[compilazione|compilato]] ([[codice oggetto]]) e la risposta viene acquisita attraverso [[canali standard|standard output]]. L'acquisizione dei parametri può avvenire attraverso [[Variabile d'ambiente (Windows)|variabili d'ambiente]], passaggio di parametri sulla [[riga di comando]] o lo [[canali standard|standard input]] a seconda della mole di dati e delle scelte del programmatore<ref>{{Cita web |url=http://telemat.det.unifi.it/book/corso_telematica/lez_220/CGI.html#slide_205 |titolo=Copia archiviata |accesso=19 dicembre 2014 |urlarchivio=https://web.archive.org/web/20141219161112/http://telemat.det.unifi.it/book/corso_telematica/lez_220/CGI.html#slide_205 |dataarchivio=19 dicembre 2014 |urlmorto=sì }}</ref>.
 
CGI è attualmente usato solo con il protocollo [[Hypertext Transfer Protocol|HTTP]] anche se in futuro potrebbe essere esteso ad altri protocolli. La [[directory]] predefinita degli [[script]] CGI è ''/cgi-bin/'' su sistemi [[Internet Information Services|IIS]], anche se a volte è preferibile modificarla, per evitare i frequenti attacchi dai [[Bot (informatica)|bot]] sui [[file]] in quella cartella.
Esempio pratico: visitando una pagina web, il server del sito che la ospita potrebbe aprire un'immagine e scrivere sulla pagina le sue dimensioni.
 
=== Linguaggi ===
Siccome un programma CGI è eseguibile, è sostanzialmente come lasciare che il mondo faccia girare un programma nel tuo sistema, che non è la cosa più sicura da fare. Inoltre vi sono alcune precauzioni che necessitano di essere implementate quando si viene ad usare un programma CGI. Probabilmente quella che più riguarda un tipico Web user è il fatto che il programma CGI necessita di essere collocato in una directory speciale, così che il Web server sappia di eseguire un programma piuttosto che mostrarlo sul browser. Questa directory è solitamente sotto controllo del webmaster, proibendo all’utente medio di creare programma CGI. Ci sono altri modi si permettere l’accesso ai CGI scripts, ma sta al webmaster prepararli per l’utente
I [[linguaggi di programmazione]] usati sono generalmente [[C (linguaggio)|C]]/[[C++]] e [[Perl]]. Alcuni applicativi utilizzano la tecnologia [[FastCGI]] per introdurre nuovi [[linguaggio di scripting|linguaggi di scripting]], [[interprete (informatica)|interpretati]] e non compilati, come ad esempio [[PHP]]. L'altra possibilità è utilizzare librerie, ma variano in base al server web e al [[sistema operativo]] utilizzato, diminuendo così la [[portabilità]] del [[software]].
 
== Storia ==
CGI venne implementato nel [[1993]] quando il [[World Wide Web]] era agli esordi, inizialmente per l'utilizzo con le [[mailing list]]. Gli autori dell'interfaccia e della [[Request for Comments|RFC]] furono sviluppatori dell'[[Apache Software Foundation]]: [[David Robinson (informatica)|David Robinson]] e [[Ken Coar]]<ref>rfc3875 – https://www.ietf.org/rfc/rfc3875.txt</ref>.
 
La normativa di riferimento è la [https://www.ietf.org/rfc/rfc3875.txt RFC3875].
 
== Note ==
<references />
 
== Bibliografia ==
* {{RivistaVG|mc|164|250-252|7/8|1996|titolo=CGI: Common Gateway Interface}}
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
*{{en}} [http://hoohoo.ncsa.uiuc.edu/cgi/ Specifiche CGI 1.1]
* {{FOLDOC}}
* {{en}}[https://www.w3.org/CGI/ standard CGI] su w3.org.
* {{cita web|1=http://hoohoo.ncsa.uiuc.edu/cgi/|2=Specifiche CGI 1.1|lingua=en|accesso=3 ottobre 2002|urlarchivio=https://web.archive.org/web/20021003125844/http://hoohoo.ncsa.uiuc.edu/cgi/|dataarchivio=3 ottobre 2002|urlmorto=sì}}
 
{{Interfacce web}}
[[categoria:Tecnologie per il Web]]
{{Controllo di autorità}}
{{Portale|internet|Telematica}}
 
[[daCategoria:CGIServer web]]
[[de:Common Gateway Interface]]
[[en:Common Gateway Interface]]
[[eo:CGI]]
[[es:Common Gateway Interface]]
[[et:CGI]]
[[fi:CGI]]
[[fr:Common Gateway Interface]]
[[he:Common Gateway Interface]]
[[ja:Common Gateway Interface]]
[[lt:CGI]]
[[nl:Common Gateway Interface]]
[[no:Common Gateway Interface]]
[[pl:CGI]]
[[pt:CGI]]
[[ru:CGI]]
[[sl:Common Gateway Interface]]
[[sv:Common Gateway Interface]]
[[zh:通用网关接口]]