CGI. Ing Cesare Monti (revisionato da Andrea Omicini)

Documenti analoghi
CGI. Ing Cesare Monti (revisionato da Andrea Omicini)

la nascita di HTTP Ing. Cesare Monti 28 febbraio 2005

Il Web come Interfaccia Utente di un Sistema Informativo

Basi di Dati-IX. Basi di dati e web. Introduzione. Schema. Basi di dati e web. Corso di Laurea in Informatica Anno Accademico 2013/2014

Programmazione server-side: applicazioni CGI

Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste. Basi di Dati e Web. Credits to: Prof. M. Di Felice UniBO

Modulo o Form in Html

JavaScript. Caratteristiche del JavaScript. Javascript consente di rendere dinamiche le pagine HTML

Laboratorio di Progettazione Web Introduzione

Laboratorio di Progettazione Web Applicazioni Web

CLIENT WEB. Strumento di interfaccia tra l utente ed il sistema Web (browser).

D B M G Il linguaggio HTML

Programmazione Web D B M G. Il linguaggio HTML

@2011 Politecnico di Torino 1

Programmazione per il Web Riassunto della lezione del 29/02/2016

Mantenimento dello stato

Il Protocollo HTTP e la programmazione di estensioni Web

Mantenimento dello stato

Programmazione server-side Parte I

Programmazione server-side ed interfaccia di programmazione CGI

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Programmazione Web D B M G. Il linguaggio HTML

Stack protocolli TCP/IP

Tito Flagella - Il protocollo HTTP

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1

HTML Interazione con l utente

Corso di Applicazioni Telematiche

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

L aspetto dei file HTML

RETI DI CALCOLATORI. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine

Introduzione a Internet e World Wide Web

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

Parte II: Reti di calcolatori Lezione 7 (31)

Siti web centrati sui dati (Data-centric web applications)

Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi

Tipi fondamentali di documenti web

Programmazione server-side: applicazioni CGI

Sommario APPUNTI WEB SERVER E PHP

Introduzione. Java HTTP. G. Prencipe

Introduzione all inguaggio HTML e CSS3 INTRODUZIONE. Prof.ssa Cristina Gena

Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web.

modulo: siti web centrati sui dati

Lezione 6. Siti, Utenti e Sessioni

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

Lo strato di applicazione in Internet

Laboratorio Progettazione Web Applicazioni Web Lezione 2. Andrea Marchetti IIT-CNR 2011/2012

Applicazioni web centrati sui dati (Data-centric web applications)

Siti interattivi e dinamici. in poche pagine

La connessione ai database MySQL tramite script PHP versione 5.5

Strumenti trasparenti unico insieme di informazioni accessibile a tutti i possibili utenti. Gopher

SQL per le applicazioni D B M G

SQL per le applicazioni D B M G

Tecnologie di Sviluppo per il Web

Processi. Franco Maria Nardini

Elaborazioni serverside: dalle CGI al PHP. Cesare Monti 15 marzo 2004

2011 Politecnico di Torino 1

La Tecnologia CGI-Servlet

Tecnologie e applicazioni web JSON Web Token (JWT)

Linguaggi dinamici: quando nascono?

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont)

Politecnico di Milano Facoltà del Design Bovisa. Ing. Marco Funaro Dipartimento di Elettronica e Informazione.

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

World Wide Web (WWW o Web)

HTML & CGI. Contenuti. Siti ed applicazioni web Output del CGI Metodi. Esempio di applicazione CGI Libreria CGIC

Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito. gestire gli accessi alle risorse. gestire l eterogeneita

Programmazione CGI Facilitata per WEB AS/400

Operazioni server Web

Piattaforme software distribuite I

2011 Politecnico di Torino 1

Introduzione: programmazione lato server e CGI

Tecnologie di Sviluppo per il Web

Elaborazioni serverside: dalle CGI al PHP. Cosa vedremo HTTP. Il protocollo HTTP. HTTP: Request. HTTP: from stateless to interaction

Corso di Informatica Generale 1 IN1. Linguaggio Perl

Il Browser. T.A.R.I. Servizi di Rete (ICT, AL) T.A.R.I. Servizi di Rete (ICT, AL) Schema Client Server

Seminari Eucip, Esercizio e Supporto di Sistemi Informativi

Sistemi Operativi 1. Mattia Monga. a.a. 2015/16. Dip. di Informatica Università degli Studi di Milano, Italia

Sistemi Operativi. Bruschi Monga Re. Shell Esercizi Shell programming Esercizi I/O. Sistemi Operativi. Bruschi Monga Re

Tecnologie di Sviluppo per il Web

Uso di Internet: Esempio. Prof. Franco Callegati

Componenti principali

Fondamenti di Informatica

Fortran. Funzioni e Subroutine.

Flavio De Paoli

Laboratorio Progettazione Web PHP e FORMs HTML - Lezione 8. Andrea Marchetti IIT-CNR 2011/2012

Introduzione a Java Servlet Technology

Il protocollo HTTP (cont.)

HTML. Es: La prossima parola è in <b>neretto</b> Es: La prossima parola è in neretto

Antonio d Acierno 13/01/2006

Laboratorio Progettazione Web Applicazioni Web

Laboratorio di Basi di Dati

Introduzione. A Tecnologie 1

Il linguaggio PHP. Insegnarvi tutto il PHP? Non esattamente Obiettivo: insegnarvi ad interagire via web con una base dati

Transcript:

CGI Ing Cesare Monti (revisionato da Andrea Omicini)

HTTP: CGI Nate per aggiungere un modello di interazione tra client e server la computazione sul server può essere specializzata Il codice risiede interamente sulla macchina server... questo spiega il termine server side... Si lascia aperta la possibilità di eseguire codice chiamandolo dal web Questa possibilità viene per la prima volta consentito dal protocollo CGI Common Gateway Interface

CGI: il protocollo I clients richiedono l esecuzione di un programma [oggi non sembra nulla ma allora era un passo avanti notevole] I server invocano il programma chiamato nell URL e utilizzano il protocollo CGI per interpretare il metodo (GET, POST) con cui passare i parametri al programma invocato (via stdin) Il programma viene eseguito Una volta eseguito, ritorna la risposta in formato HTML (via stdout) al server [o meglio il programmatore ritorna in HTML via stout, e c è ridirezione (più o meno) automatica] Il server rigira la risposta al client

CGI: altre migliorie lo stato Tramite CGI è stato introdotto il concetto di stato legato all HTTP Lo stato viene mantenuto attraverso l invio di variabili che vengono mantenute in memoria dal client (cookies)... il nome pare sia stato coniato da un programmatore Netscape http://www.cookiecentral.com/faq/#1.2

CGI: how to per aggiungere passaggio di parametri tra una connessione e l altra anche HTML è stato modificato aggiunta di Form <form action=... method=... > Form Elements <input type=... > http://www.w3c.org

CGI: How To Possono essere scritte in qualsiasi linguaggio che possa venire interpretato dalla macchina server Quelli più usati sono C/C++ Fortran PERL Python TCL any Unix shell language Visual Basic AppleScript Java

CGI: passaggio dei dati GET viene riscritto a run time l URL della risorsa a cui si vuole accedere aggiungendo i campi che si vogliono passare all URL stesso Es: <chiamata a: http://www.unsito.com/ unoscriptcgi.exe> con parametri: param1= 10, param2= ciao La request line diventa GET www.unsito.com/unoscriptcgi.exe?param1= 10 &param2= ciao HTTP/1.0

CGI: il passaggio dei dati POST Tutti i parametri vengono passati dentro al campo Entity Body e viene modificato il method del Request Line Es: <chiamata a: http://www.unsito.com/ unoscriptcgi.exe> con parametri: param1= 10, param2= ciao POST www.unsito.com/unoscriptcgi.exe HTTP/1.0 param1= 10 &param2= ciao

CGI: pro e contro dei metodi GET Pro i parametri rimangono visibili all utente l output della pagina dinamica può essere bookmarcato Contro si deve essere sicuri che lo script CGI reso disponibile non possa eseguire azioni dannose a fronte di parametri sbagliati hacking nella stesura dello script occorre fare parsing sull URL per avere i parametri

CGI: pro e contro dei metodi POST Pro non occorre dividere URL dai parametri Contro è già nel metodo nel caso di pacchetti incompleti non si può eseguire nulla le pagine non possono essere bookmarked

CGI: scenario Browser Server Variables CGI Program 1: Submit 2: Post 3 4: Write 5: Execute 6: Read 7: Standard Input 9: Standard Output 10: Return HTML file 8

CGI: scenario Browser 1: Submit Server Variables CGI Program 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2: Post 3 4: Write 5: Execute 6: Read 7: Standard Input 9: Standard Output 10: Return HTML file 8

CGI: scenario Browser 1: Submit 2: Post Server 3 Variables 4: Write CGI Program 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 5: Execute 6: Read 7: Standard Input 9: Standard Output 10: Return HTML file 8

CGI: scenario Browser 1: Submit 2: Post Server 3 Variables 4: Write 5: Execute CGI Program 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 6: Read 7: Standard Input 9: Standard Output 10: Return HTML file 8

CGI: scenario Browser 1: Submit 2: Post Server 3 Variables 4: Write 5: Execute CGI Program 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 7: Standard Input 6: Read 4. Il Server setta le variabili di environement (server name, request method, path_info, content_type ) 9: Standard Output 10: Return HTML file 8

CGI: scenario Browser 1: Submit 2: Post Server 3 Variables 4: Write 5: Execute CGI Program 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 7: Standard Input 6: Read 4. Il Server setta le variabili di environement (server name, request method, path_info, content_type ) 9: Standard Output 5. Il server HTTP da inizio al programma CGI 10: Return HTML file 8

CGI: scenario Browser 1: Submit 2: Post 10: Return HTML file Server 3 Variables 4: Write 5: Execute 7: Standard Input 9: Standard Output 6: Read CGI Program 8 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 4. Il Server setta le variabili di environement (server name, request method, path_info, content_type ) 5. Il server HTTP da inizio al programma CGI 6. Il programma CGI legge le variabili d ambiente

CGI: scenario Browser 1: Submit 2: Post 10: Return HTML file Server 3 Variables 4: Write 5: Execute 7: Standard Input 9: Standard Output 6: Read CGI Program 8 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 4. Il Server setta le variabili di environement (server name, request method, path_info, content_type ) 5. Il server HTTP da inizio al programma CGI 6. Il programma CGI legge le variabili d ambiente 7. Riceve da stdin i dati utente

CGI: scenario Browser 1: Submit 2: Post 10: Return HTML file Server 3 Variables 4: Write 5: Execute 7: Standard Input 9: Standard Output 6: Read CGI Program 8 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 4. Il Server setta le variabili di environement (server name, request method, path_info, content_type ) 5. Il server HTTP da inizio al programma CGI 6. Il programma CGI legge le variabili d ambiente 7. Riceve da stdin i dati utente 8. Fa qualcosa

CGI: scenario Browser 1: Submit 2: Post 10: Return HTML file Server 3 Variables 4: Write 5: Execute 7: Standard Input 9: Standard Output 6: Read CGI Program 8 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 4. Il Server setta le variabili di environement (server name, request method, path_info, content_type ) 5. Il server HTTP da inizio al programma CGI 6. Il programma CGI legge le variabili d ambiente 7. Riceve da stdin i dati utente 8. Fa qualcosa 9. Ritorna i risultati su stdout

CGI: scenario Browser 1: Submit 2: Post 10: Return HTML file Server 3 Variables 4: Write 5: Execute 7: Standard Input 9: Standard Output 6: Read CGI Program 8 1. L Utente manifesta la volontà di sottomettere dati ad elaborazione, il browser colleziona i dati, controlla il metodo da invocare e genera la request 2. Il browser invoca il metodo POST e sottomette la request 3. Il Server riceve la richiesta e inizia la sessione di risposta 4. Il Server setta le variabili di environement (server name, request method, path_info, content_type ) 5. Il server HTTP da inizio al programma CGI 6. Il programma CGI legge le variabili d ambiente 7. Riceve da stdin i dati utente 8. Fa qualcosa 9. Ritorna i risultati su stdout 10. Il server HTTP formatta il risultato e lo rispedisce al client

Example: C code main(int argc, char *argv[]) { entry entries[max_entries]]; register int x,m=0; int cl; printf("content-type: text/html%c%c",10,10); // CHECK SUL CONTENT TYPE if(strcmp(getenv("content_type"),"application/x-www-form-urlencoded")) { printf("this script can only be used to decode form results. \n"); exit(1); } cl = atoi(getenv("content_length")); // ACQUISIZIONE DATI DA STDIN for(x=0;cl && (!feof(stdin));x++) { m=x; entries[x].val = fmakeword(stdin,'&',&cl); entries[x].name = makeword(entries[x].val,'='); } // PREPARAZIONE DATI DI OUTPUT printf("<h1>query Results</H1>"); printf("you submitted the following name/value pairs:<p>%c",10); printf("<ul>%c",10); } for(x=0; x <= m; x++) printf("<li> <code>%s = %s</code>%c",entries[x].name, entries[x].val,10); printf("</ul>%c",10);

CGI: dove sta la fregatura? Il protocollo CGI prevede l istanziamento di un nuovo processo ogni qual volta si invochi una CGI pensate quindi che ad ogni request parte un processo pensate ad un server web con molta utenza......col tempo è stata introdotto il protocollo FastCGI... ma non sempre è applicabile non molto diffuso

CGI... e dopo? scrivere CGI implica scrivedre un applicativo che produca il proprio output codificato in HTML implica anche una serie impressionante di problemi di gestione legati alla scalabilità dell ambiente e alla eterogeneità dei client quanto applicativi browser esistono??

CGI... e dopo? col tempo l evoluzione delle CGI ha portato ad una serie di: linguaggi di elaborazione server-side PHP JSP ASP Ognuno dei quali ha propri meccanismi per abilitare e gestire l interazione e la comunicazione beans sessioni oggetti server

CGI... e dopo? evoluzione degli applicativi server da web server a Application server JBoss Cocoon... ognuno con proprie specifiche e capacità

CGI un passo per volta qualche link http://www.cgi101.com/book http://hjs.geol.uib.no/cplusplus