Tecnologie per il Web Dinamico



Documenti analoghi
Il Protocollo HTTP e la programmazione di estensioni Web

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

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

Siti interattivi e dinamici. in poche pagine

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

19. LA PROGRAMMAZIONE LATO SERVER

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Protocolli e architetture per WIS

Tipi fondamentali di documenti web

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Corso di PHP. Prerequisiti. 1 - Introduzione

Database e reti. Piero Gallo Pasquale Sirsi

Operazioni server Web

Applicazioni Web: meccanismi per il passaggio di informazioni tramite HTTP Corso di Applicazioni Telematiche

Componenti Web: client-side e server-side

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Esercitazione 8. Basi di dati e web

url uniform resource locator

Implementazione di MVC. Gabriele Pellegrinetti

Architetture Web. parte 1. Programmazione in Ambienti Distribuiti A.A

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Flavio De Paoli

sito web sito Internet

Internet Architettura del www

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Il Web Server e il protocollo HTTP

L aspetto dei file HTML

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

HTTP adaptation layer per generico protocollo di scambio dati

Corso di Informatica Modulo T3 B1 Programmazione web

Introduzione all elaborazione di database nel Web

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Architetture Informatiche. Dal Mainframe al Personal Computer

Lezione II: Web server e ambiente di lavoro

Programmazione Web. Introduzione

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

Corso Web programming

Protocolli applicativi: FTP

Client - Server. Client Web: il BROWSER

Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1)

@2011 Politecnico di Torino. Pag. 1. Architettura distribuita. Architetture Client/Server. Architettura centralizzata. Architettura distribuita

Reti di Telecomunicazione Lezione 6

Lezione 1 Introduzione

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Introduzione al Web. dott. Andrea Mazzini

Lezione 9. Applicazioni tradizionali

Corso basi di dati Introduzione alle ASP

Application Server per sviluppare applicazioni Java Enterprise

Corso basi di dati Installazione e gestione di PWS

Lezione III: Oggetti ASP e interazione tramite form HTML

ESERCITAZIONE Semplice creazione di un sito Internet

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Corso di Informatica Modulo T3 B2 - Database in rete

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Come funziona internet

Dott.ssa Adriana Pietramala

Reti di Calcolatori. Il Livello delle Applicazioni

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Informatica. Prof. M. Colajanni Università di Modena Reggio Emilia

Sistemi informativi secondo prospettive combinate

Introduzione alle applicazioni di rete

Architetture Web: un ripasso

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Esercizi di JavaScript

Proposta UNIF Progetto: Portale delle fonti di energia rinnovabile. Obiettivi

DINAMIC: gestione assistenza tecnica

b) Dinamicità delle pagine e interattività d) Separazione del contenuto dalla forma di visualizzazione

Presentazione Data Base

Applicazione ASP di esempio

04/05/2011. Lezione 6: Form

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

appunti delle lezioni Architetture client/server: applicazioni client

Una metodologia di progettazione di applicazioni web centrate sui dati

Capitolo 4 Pianificazione e Sviluppo di Web Part

Dal protocollo IP ai livelli superiori

Approccio stratificato

Access. P a r t e p r i m a

Tecnologie e Programmazione Web

Lezione 6: Form 27/04/2012

Corso di PHP. Prerequisiti. 1 - Introduzione

bmooble INFOMOBILITY demo environment

Programmazione dei socket con TCP #2

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

capitolo 8 LA CHECKLIST PER LA VALUTV ALUTAZIONEAZIONE TECNOLOGICA

DBMS e Linguaggi di programmazione nell'era di Internet

Cosa è un foglio elettronico

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Architetture Web Protocolli di Comunicazione

Progetto di Applicazioni Software

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

RETI DI COMPUTER Reti Geografiche. (Sez. 9.8)

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Transcript:

PARTE 4 Tecnologie per il Web Dinamico Parte 4 Modulo 1: Classificazione

Risorse dinamiche Alcune risorse Web non sono file multimediali, ma richiedono l esecuzione di (uno o più) programmi L utente non ha bisogno di rendersi conto che l URL richiesto corrisponde ad un programma, in quanto il server HTTP trasmette il risultato dell esecuzione e non il programma ( risorse attive) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.3 Possibili utilizzi Creazione di pagine personalizzate dinamicamente nel momento in cui vengono richieste in base a diversi parametri (es., dati client, ora/giorno, stato del sistema) Accesso ad informazioni gestite da server non HTTP, come i database ed altre applicazioni Interrogazioni a motori di ricerca Interazione personalizzata tra utente e server, che consente all utente di effettuare accessi riservati, ricerche, acquisti e transazioni Il Web come interfaccia di servizi sempre più sofisticati Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.4

Livelli logici di un servizio Web-based In un servizio si possono approssimativamente distinguere, a livello logico, le seguenti componenti: Interfaccia utente, che rappresenta ciò che l utente percepisce attraverso i propri sensi interagendo con l applicazione Logica di presentazione, che rappresenta quello che accade quando l utente interagisce con l interfaccia Logica dell applicazione, cioè le operatività cui è preposta l applicazione (business logic) Logica dei dati, cioè la gestione fisica dei dati (aggiornamenti e ricerche), compresa la loro validazione attraverso verifiche di completezza ed integrità Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.5 Importante Non confondere i livelli logici con i processi che realizzano i livelli logici e con i computer che eseguono i processi. Quindi, Livelli logici Processi Computer Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.6

Alternative per mappare 4 livelli logici sui processi Tutto su di un processo (teorico) Con due processi distinti Processo client: gestisce il livello interfaccia utente Processo server: gestisce i 3 livelli (presentation, application, data) Con tre processi distinti Processo client: gestisce il livello interfaccia utente 1 processo server: gestisce i livelli presentation e application 2 processo server: gestisce il livello data Con quattro processi distinti Processo client: gestisce il livello interfaccia utente 1 processo server: gestisce i livelli presentation 2 processo server: gestisce il livello application 3 processo server: gestisce il livello data Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.7 Alternative per mappare 2 o più processi su 2 computer Esempio (2 processi 2 computer) Esempio (3 processi 2 computer) Esempio (4 processi 2 computer) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.8

Alternative per mappare 4 processi su 2 o più computer (cont.) Esempio (4 processi 2 computer) Esempio (4 processi 3 computer) Esempio (4 processi 4 computer) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.9 Evoluzione architetture lato Web server HTTP Back-end (Presentation logic) (Data logic - DB server) HTTP Web application Back-end (Presentation logic) (Business logic) (Data logic - DB server) Front-end HTTP Router/ Firewall LAN (Presentation logic) Web application (Business logic) Back-end (Data logic - DB server) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.10

Livello Presentation logic Agisce come un interfaccia tra il livello di interfaccia utente e la business logic Implementato mediante: HTTP server Apache Microsoft IIS (eventuali) Business-logic plugins Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.11 Livello Data logic Gestisce dati strutturati su supporti di memoria permanente Implementato mediante: Database Management systems Microsoft Sql server IBM DB2 Oracle MySql (open source) Postgress (open source) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.12

Livelli definiti: Presentation & Data Front tier HTTP server (Presentation logic) Middle tier? (Business logic) Back-end tier Back-end server (Data logic) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.13 Livello Business logic PROSSIMO OBIETTIVO Analizzare le tecnologie software che consentono la realizzazione di cosiddetti sistemi Web multi-livello (multi-tier) per realizzare servizi Web-based dinamici Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.14

Tecnologie per middle tier Tecnologie che prevedono processi esterni al server HTTP Linguaggi di scripting Tecnologie distribuite ad oggetti Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.15 Tecnologie per middle tier (I) Tecnologie che prevedono processi esterni al server HTTP basate su Common Gateway Interface (CGI): script in C o Perl (molto popolare, perché?) il server HTTP crea un nuovo processo per il programma CGI che dovrà essere eseguito ( copia programma, allocazione memoria, ambiente di variabili separato, ecc.) TECNOLOGIA NON SCALABILE (per un server che deve gestire molte richieste, questo è inaccettabile) HTTP Web application Back-end (Presentation logic) (Business logic) (Data logic - DB server) CGI-based (Presentation+ Business processi separati) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.16

Primo passo di evoluzione Se il problema è la scalabilità limitata Se il limite alla scalabilità è dovuto principalmente alla necessità di attivazione di un nuovo processo per ogni richiesta dinamica Si aumentino le prestazioni, mediante l utilizzo di tecnologie che evitino la creazione di un nuovo processo Tecnologie di scripting Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.17 Tecnologie per middle tier (II) FastCGI: permette di condividere un istanza di un programma CGI Server API (Netscape NSAPI, MS ISAPI): Librerie condivise caricate nello spazio del server HTTP, in grado di servire richieste multiple senza creare nuovi processi poca portabilità (legate al server HTTP) e vulnerabili (thread safe) ColdFusion Mod_Perl: modulo di Apache, in grado di interpretare script Perl all interno del processo HTTP HTTP Web application Back-end (Presentation Logic + Business logic) (Data logic, DB server) (Presentation+ Business integrati) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.18

Tecnologie per middle tier (II bis) Linguaggi di scripting (codice inserito nelle pagine HTML ed interpretato direttamente dal server HTTP) Active Server Pages (ASP, MS): scritte in HTML o VBScript Soluzione specifica per server HTTP (IIS), problemi di manutenibililtà del software HTML/script integrato Java servlets (Sun): programmi server side in grado di servire multiple richieste HTTP con un solo processo (come un applet multi-thread eseguito lato server) basato su JVM: portabile, non efficiente Java Server Pages (JSP, Sun): può combinare HTML, Java e JavaBean; PHP Programming Language of 2004 HTTP Web application Back-end (Presentation Logic + Business logic) (Data logic - DB server) (Presentation+ Business integrati) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.19 Secondo passo di evoluzione Con l evoluzione tecnologica delle piattaforme hardware (CPU, dischi, RAM, cache), l aspetto prestazionale delle applicazioni Web-based rimane un fattore importante, ma aumentano anche le aspettative sui servizi che si vogliono poter erogare via Web La complessità del middle tier aumenta considerevolmente (non più solo accesso a un DB, ma a DB multipli, Insiemi di file XML, directory service, ecc.) si sviluppa una vera e complessa business logic Applicazioni sempre più complesse necessità di modularità, portabilità (spaziale e temporale), manutenibilità e riutilizzo del software Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.20

Secondo passo di evoluzione (2) Le tecnologie di scripting, che mirano principalmente all aumento delle prestazioni, non soddisfano i nuovi requisiti richiesti dalle nuove applicazioni software La business logic complessa rende necessario una separazione dal processo server HTTP Attenzione: Scopi diversi. Non è un ritorno al CGI! Qual è la tecnologia che più risponde ai requisiti di: Modularità Portabilità Manutenibilità? Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.21 Tecnologie per middle tier (III) Tecnologie distribuite ad oggetti Ogni oggetto ha un interfaccia (insieme di metodi pubblici) Il codice può essere eseguito dove serve (portabilità) Promuove la generalità: molte applicazioni possono usare business object comuni Migliora la manutenibilità: con buona interfaccia, cambiamenti influenzano solo l oggetto HTTP Web application LAN (Presentation logic) (Business logic) Distribuite a oggetti (Presentation+ Business separati) Back-end (Data logic - DB server) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.22

Nasce il Web Application Server Web Application Server: un Web server che ha una business logic Due note: - la definizione non spiega granché - si parla sempre di server (=processo) non di computer! Front tier HTTP server (Presentation logic) Middle tier Web application server (Business logic) Back-end tier Back-end server (Data logic) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.23 Web Application Server (WAS) WAS Implementa la business logic del sito Web, ovvero tutte le possibili funzioni che sottendono le operazioni dinamiche Traduce le richieste utente in operazioni che interagiscono con applicativi e/o con il livello data logic A dir la verità, si esce dal concetto di tecnologia per il solo sito Web l insieme delle tecnologie Web viene utilizzata per interfacciarsi all intero SISTEMA INFORMATICO Implementato mediante: Tecnologie middleware (una miriade ) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.24

Sintesi tecnologie principali 1. Tecnologie che prevedono processi esterni al server HTTP Tecnologia Common Gateway Interface (CGI) Servlet Java 2. Linguaggi di scripting (codice inserito nelle pagine HTML ed interpretato direttamente dal server HTTP) Active Server Pages (ASP, Microsoft) PHP Java Server Pages (JSP, Sun) 3. Tecnologie distribuite ad oggetti Tecnologia distribuita ad oggetti (CORBA) Java2 Enterprise Edition (J2EE) Microsoft.NET Altre FastCGI Tecnologia server API Es., Netscape (NSAPI) ColdFusion Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.25 Parte 4 Modulo 2: CGI

Script e Gateway Meccanismi che consentono al client Web la capacità di eseguire un applicazione sulla piattaforma server al server Web di connettersi ad altri servizi e poter recuperare informazioni dall utente, eventualmente mediante form interattive SCRIPT: definizione generica di un qualsiasi programma eseguito dal server (tipicamente, ma non necessariamente implementato in un lingua interpretato) GATEWAY: uno script che fornisce accesso ad un servizio online (es., ad un database) svolgendo un ruolo da interfaccia tra il server Web ed un altro server Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.27 Azioni di uno script/gateway Tradurre l input del client (il file HTML proveniente dalla connessione HTTP) in forma comprensibile ai servizi a cui si collega (es., query nel linguaggio del database) Invocare l attivazione di altri programmi eseguibili Tradurre l output del programma in una forma comprensibile al client (es., l informazione restituita dal database in un formato compatibile con il protocollo HTTP) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.28

Implementazione di script Uno script Web, nella sua forma più generale, è un qualsiasi programma che può essere eseguito dal server in risposta ad una richiesta Web Non importa il linguaggio con cui lo script è implementato C/C++ Perl TCL Unix shell Visual Basic Altri strumenti proprietari (AppleScript, ) L importante è che sia in grado di leggere da STDIN, scrivere su STDOUT e leggere le variabili ambiente Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.29 Tecnologia CGI (primo standard de facto) Come garantire che il server e lo script possano interagire correttamente tenendo conto che i due software sono tipicamente implementati da persone differenti in linguaggi potenzialmente diversi? Una soluzione è lo standard NCSA Common Gateway Interface (CGI) che specifica come gli script devono essere invocati come devono essere passati i dati dal processo server allo script e viceversa Lo standard CGI svolge tra processo server e script lo stesso ruolo che il protocollo HTTP svolge tra browser e processo server. Lo standard è così importante che spesso gli script e i gateway vengono chiamati rispettivamente script CGI e gateway CGI Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.30

Suddivisione dello spazio server Browser Area WWW Il server fornisce file (statici o volatili) tipo file Area CGI Il server esegue script CGI che creano documenti dinamici File system del server Albero degli eseguibili ( /cgi-bin/ ) Albero delle pagine del sito Web ( / ) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.31 Azioni del server HTTP Il server HTTP deve determinare che la risorsa richiesta nell URL non è una pagina Web, ma un programma. Il processo deve localizzare il programma e controllare se può essere eseguito. Possibili scelte: directory /cgibin qualunque file abbia estensione.cgi in qualunque directory qualunque file abbia estensione.exe (server su Windows NT) Nel caso in cui le precedenti operazioni siano andate a buon fine, il server HTTP deve attivare il programma script e assicurare che l eventuale input proveniente dal browser sia passato allo script Il server HTTP deve leggere l output dello script e passarlo al client, ovvero deve inviare un messaggio di errore Il server HTTP deve chiudere la connessione nel momento in cui l esecuzione dello script è completata Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.32

Interazione tra browser e server HTTP browser server HTTP CGI Invocazione diretta di un URL (METHOD=GET) l utente specifica l URL di un CGI l utente seleziona un link all URL di un CGI Invio di una fill-in form mediante METHOD=GET mediante METHOD=POST Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.33 Fill-in form Gli script/gateway acquisiscono l informazione dall utente mediante una speciale pagina HTML detta fill-in form inviata dal server alla macchina client Il browser visualizza il form all utente come una normale pagina HTML, ma in più raccoglie i dati di input inseriti dall utente Il browser rispedisce al server il fill-in form compilato I form possono essere utilizzati per raccogliere vari tipi di informazioni, come nome e password dell utente per poter accedere ai siti Web ad accesso limitato, o una o più parole chiave per consentire la ricerca in database. I form potrebbero anche essere embedded (es., imagemap o mappe sensibili) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.34

Tag <FORM> di HTML <FORM> </FORM> Attributi: METHOD=GET METHOD=POST ACTION= http://www.unimo.it/cgi-bin/script.cgi <INPUT> Attributi: TYPE=TEXT TYPE=CHECKBOX TYPE=RADIO TYPE=SUBMIT TYPE=RESET NAME= etichetta VALUE= valore_associato CHECKED (input testuale) (selezione) (selezione esclusiva) (tasto per inviare i dati) (tasto per cancellare i dati) (se selezionato) (selezionato per default) <SELECT> <OPTION>...</SELECT> (menù a tendina) Attributi: NAME= etichetta Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.35 Un esempio di Fill-in Form Dove studi? un esempio di form Quale browser stai usando? 1) Netscape 2) Explorer Submit Reset <FORM METHOD=POST ACTION= http://www.dsi.unimo.it/cgi-bin/miofile > <P>Dove studi? <INPUT NAME= city TYPE=text SIZE= 20 > <P>Quale browser stai usando? <P> Netscape <INPUT NAME= brow TYPE=radio VALUE= netscape > <P> Explorer <INPUT NAME= brow TYPE=radio VALUE= explorer > <P><INPUT TYPE=submit> <INPUT TYPE=reset> </FORM> Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.36

Metodo GET L informazione della fill-in form è inviata al server come parte dell URL, aggiungendo alla stringa URL una QUERY_STRING, separata dal carattere? La query_string è composta da coppie nome=valore : nome è il nome della variabile valore è il valore assegnatole Ogni coppia nome=valore è separata dal carattere &. Es., /cgi-bin/script.cgi?city=modena&brow=netscape La query_string è URL encoded e si deve decodificare Lo svantaggio maggiore del metodo GET è che la dimensione massima della QUERY_STRING è limitata dalla dimensione dell input buffer del server HTTP (tipicamente fissata a 1024 byte) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.37 Metodo POST L informazione della fill-in form non è aggiunta all URL, ma viene inviata dopo tutte le informazioni dell header della richiesta HTTP In particolare, tra le informazioni dell header vi è il campo content-length, che contiene la dimensione (in byte) dell informazione inviata al server. In questo modo si supera il problema maggiore del metodo GET. Un altro vantaggio del metodo POST è la possibilità di inviare informazioni anche non testuali (utilizzando opportunamente il campo content-type) L informazione viene passata dal server HTTP allo script CGI mediante STDIN (si vedrà dopo) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.38

Esempio: Metodo POST POST /cgi-bin/script.cgi HTTP/1.0 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 city=modena&brow=netscape Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.39 GET Indicato per pochi parametri (<1024 byte) Solo parametri testuali Possibilità di inserire un URL con parametri opportuni all interno di una pagina HTML. Esempio: <A HREF= http://www.unimo.it /cgi-bin/search?query=ingegneria> Ricerca Facoltà Ingegneria </A> POST Indicato per grandi quantità di dati Dati in qualsiasi formato (testi, immagini, video) Solo in risposta ad una fill-in form Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.40

URL encoding Caratteri quali spazi, slash, tilde, sono illegali in un URL. Pertanto devono essere codificati per poter essere trasmessi dal browser Spazio --> + Esempio: Campo nome in una form: John Smith www.unimo.it/cgi-bin/script.cgi?myname=john+smith Caratteri illegali --> %codice ASCII esadecimale Esempio: Campo file in una form: ~filename www.unimo.it/cgi-bin/script.cgi?myfile=%7efilename Sarà compito del programmatore dello script CGI decodificare l URL prima di utilizzarne i valori Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.41 Interazione tra server HTTP e CGI browser server HTTP CGI Nel momento in cui un client richiede ad un server di lanciare un CGI, può anche passargli delle informazioni da fornire al CGI. Esistono 3 modalità per passare parametri dal server HTTP allo script CGI: Variabili ambiente Argomenti linea di comando Standard input Esiste un modo per passare risultati dallo script CGI al server HTTP: Il CGI invia il risultato dell elaborazione sempre sullo standard output verso il server HTTP, che a sua volta prepara i dati e li rispedisce al client. Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.42

Variabili ambiente Una variabile ambiente è un parametro con un nome per trasferire informazioni dal server allo script CGI. Non è necessariamente una variabile dell ambiente del Sistema Operativo, anche se questa è l implementazione più comune. Esempi (rappresentazione canonica: maiuscole_maiuscole ): SERVER_SOFTWARE, nome e versione del server SERVER_NAME, hostname o indirizzo del nodo server GATEWAY_INTERFACE, versione CGI (uso: CGI/1.1) QUERY_STRING, informazione contenuta dopo il? nell URL REQUEST_METHOD, metodo della richiesta HTTP (GET, PUT, ) REMOTE_ADDR, indirizzo IP del nodo client che effettua la richiesta REMOTE_USER, se lo script è protetto da autenticazione utente CONTENT_TYPE, per query HTTP POST e PUT CONTENT_LENGTH Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.43 Input 1: Variabile ambiente QUERY_STRING Il client aggiunge nell URL un campo query nome1=valore1&nome2=valore2& separato dal resto dell URL mediante il carattere?. Ad esempio, GET http://www.unimo.it/cgi-bin/corsi.cgi?attr1=val1&attr2=val2 HTTP/1.0 Il server HTTP esegue corsi.cgi dopo aver inserito la stringa attr1=val1&attr2=val2 nella variabile ambiente QUERY_STRING Nello script CGI corsi.cgi ci dovranno essere: un istruzione del tipo: char * str = getenv("query_string"); le istruzioni per la decodifica della stringa, in formato URL encoded le istruzioni per il parsing della stringa Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.44

Input 2: Argomenti linea di comando Metodo semplice, ma non molto utilizzato per script CGI Utile, tuttavia, quando si vogliono passare pochi parametri (uno, due) senza dover effettuare il parsing di una stringa. Utilizzate, ad esempio, per richieste di tipo ISINDEX, per ricerche di testo nei file. Le parole da ricercare sono inserite direttamente nell URL, senza utilizzare il formato nome=valore. Esempio 1 (linea di comando) http://www.dsi.unimo.it/cgi_bin/corsi.cgi?impianti Esempio 2 (variabile di ambiente QUERY_STRING) http://www.dsi.unimo.it/cgi_bin/corsi.cgi?corso=impianti Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.45 Passaggio mediante linea di comando Il client aggiunge nell URL un campo query separato dal resto dell URL mediante il carattere?. Ad esempio, GET http://www.unimo.it/cgi-bin/corsi.cgi?valore1+valore2 HTTP/1.0 Il server HTTP esegue corsi.cgi valore1 valore2 Nello script CGI corsi.cgi i parametri passati sulla linea di comando potranno essere recuperati mediante tipiche istruzioni C: main(int argc, char** argv) { argv[1]; /* contiene valore1 */ argv[2]; /* contiene valore2 */ } Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.46

Input 3: Standard input Metodo possibile solo quando l applicativo CGI viene invocato mediante i metodi POST o PUT dell HTTP (utilizzati per completare la fill-in form) Il corpo della richiesta del client inviata al server HTTP viene ridiretto dal server sullo standard input dello script CGI Il numero di byte è nella variabile ambiente CONTENT_LENGHT, mentre il tipo dei dati MIME è nella variabile di ambiente CONTENT_TYPE Anche in questo caso, l informazione trasferita dal metodo POST è URL encoded e deve essere decodificata Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.47 Passaggio mediante standard input Il client invia una richiesta del tipo: POST http://www.unimo.it/cgi-bin/corsi.cgi HTTP/1.0 (linea vuota) attr1=valore1&attr2=valore2 Il server HTTP passa i parametri a corsi.cgi tramite lo standard input Nello script CGI corsi.cgi ci dovranno essere: un istruzione del tipo: scanf( %s, stringa); oppure un istruzione del tipo: char c=getchar( ); le istruzioni per la decodifica della stringa, in formato URL encoded le istruzioni per il parsing della stringa Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.48

Input a CGI (riepilogo) BROWSER METHOD HTTP SERVER-->CGI Invocazione URL GET (senza =) Linea comando Invocazione URL GET (con =) Variabili ambiente Invio form GET (con =) Variabili ambiente Invio form POST Standard input Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.49 Output da CGI Quando il server HTTP restituisce un oggetto (statico o dinamico) al client, include nell header di risposta alcune informazioni sull oggetto. Queste informazioni sono inviate indipendentemente dal risultato dell applicazione CGI. Lo script CGI può aggiungere tre tipi di informazione: Tipo del contenuto: formati standard MIME Posizione: alternativa per localizzare l oggetto Location: URL Status: risposta HTTP Status: XXX message Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.50

Esempio http://www.dsi.unimo.it/cgi-bin/phone Un semplice esempio di script shell che accede al file Unix /apps/data/phone_directory mediante il comando grep. Per trovare il numero telefonico della persona specificata nella prima parte (fill-in form). Si noti l uso di tag HTML per la creazione e la visualizzazione del testo con layout. #!/bin/sh echo Content-type: text/html if [ $# = 0 ] then echo "<HEAD>" echo "<!-- Written by B Kelly --!>" echo "<TITLE>Search Phone Directory</TITLE>" echo "<ISINDEX>" echo "</HEAD>" echo "<BODY>" echo "<H1>University Phone Directory</H1>" echo "Enter name of the person in the box.<p>" echo "</BODY>" else echo "<HEAD>" echo "<TITLE>Results of Search</TITLE>" echo "</HEAD>" echo "<BODY>" echo "<H1>Results of Search for $* </H1>" echo "<PRE><TT>" grep -i "$*" /apps/data/phone_directory echo "</PRE></TT>" echo "</BODY>" fi Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.51 1. Esecuzione script (azione client) Il browser, dopo aver localizzato l indirizzo IP del computer corrispondente all hostname www.dii.unimo.it, attiva una connessione TCP sulla porta 80 del server. Una volta stabilita la connessione TCP, il client invia la richiesta per conoscere il numero di telefono di un docente del DII. Esempio: GET /cgi_bin/phone HTTP/1.0 Connection: close User-agent: Mozilla/4.0 Accept: text/plain Accept: text/html Accept: image/* Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.52

2. Esecuzione script (informazioni) Il server riceve la stringa dal client e decodifica la richiesta secondo le regole del protocollo HTTP/1.0 per determinare le azioni da intraprendere La richiesta contiene quattro importanti informazioni: il metodo (GET) che specifica le azioni, ovvero localizzare il file, leggerlo da disco, eseguirlo, e trasmettere il risultato al client la connessione deve essere chiusa dal server, dopo aver inviato l ultimo pacchetto il pathname dello script CGI (/cgi_bin/phone) da eseguire la versione del protocollo utilizzato dal browser La richiesta contiene anche delle meta-informazioni sul browser: browser utilizzato (es., versione 4.2 di Netscape) configurazione (es., configurato per visualizzare testo ASCII, file HTML ed immagini codificate in qualsiasi modo) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.53 3. Esecuzione script (esecuzione) browser Piattaforma client Server HTTP phone (CGI) Piattaforma server grep (Unix) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.54

4. Esecuzione script (risposta OK) Assumendo che non si sia verificato alcun errore, il server invia il codice del risultato del metodo eseguito. A differenza del caso in cui la richiesta era per una pagina statica, in questo caso il server Web non valuta il Content-type né il Content-length, in quanto è lo script stesso che determina il tipo di informazione restituita: HTTP/1.0 200 OK Server: Apache/1.3.0 (Unix) Date: Thu, 29 Apr 2000 11:21:00 GMT Lo script si occupa di determinare la seconda parte dell header, seguita dalla pagina di risposta costituita dall output del processo grep : Content-type: text/html < dati del processo grep... > Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.55 5. Esecuzione script (risposta NO) Nell ipotesi in cui il file non sia trovato o non sia eseguibile, la richiesta non può essere soddisfatta ed il codice di risposta è 404 Not found e la risposta del server è del tipo: HTTP/1.0 404 Not found Server: Apache/1.3.0 (Unix) Date: Fri, 14 Jan 2000 12:30:00 GMT Content-type: text/html Content-length: 0 Nell ipotesi in cui lo script phone sia individuato, ma la sua esecuzione generi un errore (es., non viene trovato il processo Unix grep ), la risposta è: 200 OK perché il processo sta restituendo qualche informazione. Tuttavia, l informazione restituita sarà un messaggio di errore del tipo Cannot find grep command on this system. Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.56

Inserire altre informazioni nell URL URL può avere anche degli argomenti che contengono informazioni Gli argomenti vengono inseriti dopo il pathname dello script CGI e sono separati da punti interrogativi. Es., #!/bin/sh echo Content-type: text/html N=$QUERY_STRING echo "<HTML>" case "x$n" in x) N=1 echo "This is the initial page.<br><br>" ;; x[0-9]*) N= expr $N + 1 echo "You have displayed this page $N times.<br><br>" ;; *) echo "The URL you used is invalid.</html>" exit 0 ;; esac echo "<A HREF=\"http://$SERVER_NAME$SCRIPT_NAME?$N\">" echo "Click here to refresh the page.</a> </HTML>" Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.57 Esempio di esecuzione (1) Documento iniziale Content-type: text/html <HTML> This is the initial page.<br><br> <A HREF="http://www.nonexist.com/cgi/ex4?1"> Click here to refresh the page.</a> </HTML> Risultato This is the initial page. Click here to refresh the page. Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.58

Esempio di esecuzione (2) Output generato Content-type: text/html <HTML> You have displayed this page 2 times.<br><br> <A HREF="http://www.nonexist.com/cgi/ex4?2"> Click here to refresh the page.</a> </HTML> Risultato You have displayed this page 2 times. Click here to refresh the page. Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.59 Esecuzione Il server capisce che l'url richiesto è un CGI Istanzia un processo che esegue il CGI Il processo a sua volta crea un nuovo processo che esegue il comando grep Invia l'output dello script al client Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.60

Sicurezza Controllare sempre input degli utenti Cosa succede se invoco l'url ''phone.cgi?;rm'' grep $1 /apps/data/phone.txt Diventa: grep ;rm /apps/data/phone.txt Molto meglio racchiudere $1 tra apici Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.61 Configurazione CGI In Apache si usa la direttiva ScriptAlias ScriptAlias URL Path es., ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ Alternativa: AddHandler cgi-script cgi pl Option +ExecCGI Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.62

Vantaggi CGI: Pro e Contro Semplice da programmare Indipendente dal linguaggio e dalla piattaforma Standard de facto Svantaggi Poco efficiente nelle prestazioni: è necessario eseguire una FORK-EXEC per ogni richiesta E difficile verificare e garantire la sicurezza (es., l applicazione CGI viene lanciata dal processo server, con i privilegi di quest ultimo) Sistemi e Servizi di Rete - LS 2005/2006 World Wide Web dinamico 4.63