La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Common Gateway Interface. Dynamic HTML le risposte inviate al client sono (parzialmente o totalmente) create on-the-fly (al volo) dopo aver ricevuto il.

Presentazioni simili


Presentazione sul tema: "Common Gateway Interface. Dynamic HTML le risposte inviate al client sono (parzialmente o totalmente) create on-the-fly (al volo) dopo aver ricevuto il."— Transcript della presentazione:

1 Common Gateway Interface

2 Dynamic HTML le risposte inviate al client sono (parzialmente o totalmente) create on-the-fly (al volo) dopo aver ricevuto il pacchetto di richiesta il contenuto delle pagine può variare di volta in volta in base a parametri diversi (ora del giorno, stato del sistema, dati trasmessi dal client). I motori di ricerca, per esempio, rispondono alle interrogazioni con delle pagine html contenenti link necessitano di supporto da parte del web server –CGI, Servlet: chiamata di programmi esterni –ASP, JSP, PHP: codice direttamente dentro le pagine html ed interpretato dal server (il client non lo può vedere) Tecnologie che consentono di mostrare su Web loutput di programmi

3 ASP (Active Server Pages) E uno standard Microsoft Sono le pagine che hanno lestensione.ASP Utilizzano ActiveX scripting (generalmente codice VBscript o JavaScript) Esempio: Hello World! Hello World! > <FONT SIZE

4 JSP (Java Server Pages) Risposta della Sun allASP di Microsoft Utilizzano codice Java embeddato nel file HTTP The current number is 1 The current number is 2 The current number is 3 The current number is 4 The current number is 5 The current number is 1 The current number is 2 The current number is 3 The current number is 4 The current number is 5 The current number is

5 PHP (PHP Hypertext Preprocessor) Creato da un privato (Rasmus Lerdorf) nel 1994 Distribuito con diversi Web servers (per es. Apache) Utilizza una sintassi simile al Perl or C <?php $a = 1; Function incrementa ($par) { return $par + 1; } $a = incrementa($a); echo(Now a is); echo ($a); ?> Now a is 2

6 web browser web server gateway program http CGI fisico connessione IP TCP sessione presentazione applicazione bla bla ? ? CGI: architettura Richiesta host

7 Richiesta di usuali di files Client GET /index.html HTTP/1.0 bla bla ? ? Server bla bla Il server risponde inviando il contenuto di un file che è presente nel file system.

8 Esecuzione di un CGI Client GET /cgi-bin/program?par1+par2 HTTP/1.0 Server program bla bla ? ? bla bla par1 par2 par1 par2 il server riconosce una chiamata ad un CGI dal fatto che la risorsa richiesta si trova in una directory particolare (es: http://…./cgi-bin/….)

9 Organizzazione interna del server La configurazione del server web prevede la definizione di due directory: sito web cgi la directory interna corrispondente alla radice del sito web (viene specificato anche come viene acceduta dallesterno, generalmente come /) la directory interna corrispondente alla radice dellalbero degli eseguibili (viene specificato anche come viene acceduta dellesterno, tipicamente come /cgi-bin/) file system interno del server

10 Input e output del CGI program un pacchetto GET viene inviato quando: –Lutente specifica lURL di un CGI –Si clicca un link allURL di un CGI –Invio dati da una FORM con METHOD=GET un pacchetto POST viene inviato quando: –Invio dati da una FORM con METHOD=POST Linput di un CGI è una sequenza di valori o di coppie nome=valore I dati vengono mandati al server tramite pacchetti GET o POST del protocollo http.

11 La form HTML 1 - GET /form.html... 2 -...... 3 - GET|POST /cgi-bin/program... HTTP Server form.html CGI program HTTP Server 1 2 3 4 Server1 Server2 Client

12 Un esempio di FORM un esempio di form In quale città vivi? Reset Submit 1) Netscape 2) Explorer Che browser stai usando? In quale città vivi? Che browser stai usando? Netscape Explorer

13 Marcatori HTML per le FORM possibili attributi: METHOD=GET METHOD=POST ACTION= http://host.com/cgi-bin/miofile possibili attributi: TYPE=TEXT (input testuale) TYPE=CHECKBOX (selezione) TYPE=RADIO (selezione esclusiva) TYPE=SUBMIT (tasto per inviare i dati) TYPE=RESET (per cancellare i dati) NAME= mia_etichetta VALUE= valore_associato (se selezionato) CHECKED (selezionato per default)... (menù a tendina) possibili attributi: NAME= mia_etichetta

14 Pacchetto GET Referer: http://www.spc.com/form.html User-Agent: Mozilla/4.05 [en] (Win95; I) Host: www.spc.com Accept: image/gif, image/x-xbitmap, image/jpeg, */* Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 GET/cgi-bin/miofile?city=roma&brow=netscapeHTTP/1.0

15 Pacchetto POST Referer: http://www.spc.com/form.html User-Agent: Mozilla/4.05 [en] (Win95; I) Host: www.spc.com Accept: image/gif, image/x-xbitmap, image/jpeg, */* Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Content-type: application/x-www-form-urlencoded Content-length: 23 POST/cgi-bin/miofileHTTP/1.0 city=roma&brow=netscape

16 Vs Ricerca Altavista sulla complessità... Indicato per grandi quantità di dati Dati in qualsiasi formato (testi, immagini, video) Solo in risposta ad una form GET Indicato per pochi parametri Solo parametri testuali Possibilità di inserire un URL con parametri opportuni allinterno di una pagina HTML es. POST

17 Interazione webserver-CGI come argomenti della linea di comando come variabili di ambiente come standard input Esistono tre modi per passare i parametri dal server al CGI: Il CGI invia la risposta al server sempre su standard output

18 Passaggio dei parametri Submit di una form (contiene coppie nome=valore) chiamata diretta ad URL (può contenere o meno coppie nome = valore) VARIABILI AMBIENTE LINEA DI COMANDO STANDARD INPUT GETPOST contiene = non contiene =

19 Passaggio sulla linea di comando il client invia una richiesta http: GET /cgi-bin/mioprog?val1+val2 HTTP/1.0 il server esegue: mioprog val1 val2 nel codice del programma mioprog.c i parametri potranno essere recuperati in questo modo: main(int argc, char** argv) { … argv[1]; /* contiene val1 */ argv[2]; /* contiene val2 */ … } main(int argc, char** argv) { … argv[1]; /* contiene val1 */ argv[2]; /* contiene val2 */ … }

20 Passaggio per standard input il client invia una richiesta http: nel codice del programma mioprog.c ci saranno istruzioni come: il server passa i parametri a mioprog dallo standard input oppure scanf(%s,stringa); char c = getchar(); POST /cgi-bin/mioprog HTTP/1.0 … (una linea vuota) nome1=val1&nome2=val2 POST /cgi-bin/mioprog HTTP/1.0 … (una linea vuota) nome1=val1&nome2=val2 al programmatore è lasciato il compito di fare il parsing della stringa

21 Passaggio con variabile di ambiente il client invia una richiesta http: il server esegue mioprog ma prima mette la stringa nome1=val1&nome2=val2 nella variabile di ambiente QUERY_STRING GET /cgi-bin/mioprog?nome1=val1&nome2=val2 HTTP/1.0 nel codice del programma mioprog.c ci saranno istruzioni come: char * str = getenv("QUERY_STRING"); al programmatore è lasciato il compito di fare il parsing della stringa

22 Dal gateway al server (solo tramite standard output) Se il nome del gateway program… … comincia per nph (non parsed header) Il server manda loutput del gateway program al client così comè … altrimenti Il server premette lheader del pacchetto http Il client aggiunge Content-type: type/subtype (una riga vuota) …il resto del pacchetto http

23 Considerazioni sui CGI è possibile scrivere un CGI in un qualsiasi linguaggio (es. C, PERL, JAVA, VisualBasic) ogni consultazione di un CGI prevede il lancio di un nuovo processo sul server (questo può essere troppo oneroso) cè un potenziale pericolo per la sicurezza dovuto al fatto che lapplicazione CGI viene lanciata dal processo server (con i privilegi di questultimo) è uno standard de facto. Un tentativo di standardizzazione (Common Gateway Interface RFC Project) può essere reperito qui: http://web.golux.com/coar/cgi/


Scaricare ppt "Common Gateway Interface. Dynamic HTML le risposte inviate al client sono (parzialmente o totalmente) create on-the-fly (al volo) dopo aver ricevuto il."

Presentazioni simili


Annunci Google