Your SlideShare is downloading. ×
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
8 Www2009 Parte2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

8 Www2009 Parte2

722

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
722
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Parte 7 Modulo 5: Client HTTP World Wide Web (Lato Client) 1
  • 2. Browser • Il browser è un’applicazione software che svolge il ruolo di interfaccia fra l’utente ed il WWW, mascherando la complessità di Internet. • Diventa un client Web per recuperare informazioni dai server Web. • Funzioni principali – instaura una connessione TCP con il server tramite cui invia opportuni messaggi al server Web per ottenere le risorse richieste – interpreta il codice ipertestuale HTML – elabora il codice allo scopo di visualizzare in modo appropriato il contenuto delle pagine sullo schermo Reti di Calcolatori 2009/2010 - World Wide Web 64 Breve storia • FrameMaker e Acrobat PDF – consentono generazione e incorporazione di iperlink. • Gopher (University of Minnesota) – primo browser con iperlink verso siti remoti – uso di standard, quali testo ASCII e socket Unix – difetti: link separati dal testo, immagini non gestite HTML Mosaic • Mosaic (NCSA, 1993) Netscape Microsoft Explorer (tramite Spyglass Co.) Reti di Calcolatori 2009/2010 - World Wide Web 65 2
  • 3. Funzioni di un browser • Richiedere la risorsa al server Web – o attraverso un link presente su un'altra risorsa, – oppure digitando direttamente il suo indirizzo nella barra dell'indirizzo del browser • Ricevere il file con la codifica della risorsa in linguaggio HTML • Decodificare ed interpretare secondo le specifiche di HTML le caratteristiche grafiche, di formato e di comportamento dei vari oggetti contenuti nella risorsa (titoli, testi, immagini, pulsanti …) • Visualizzare la risorsa sullo schermo del computer dell'utente Reti di Calcolatori 2009/2010 - World Wide Web 66 Componenti di un browser Interprete HTML Controller Input da mouse e tastiera Driver Output verso Altro interprete lo schermo (plug-in ) Client Http Client Http Interfaccia di rete Comunicazioni con il server Web Reti di Calcolatori 2009/2010 - World Wide Web 67 3
  • 4. Azioni di un browser (1) Fase iniziale • Il browser analizza l’indirizzo inserito esplicitamente nella finestra indirizzo o l’iperlink selezionato nella pagina allo scopo di individuare la risorsa specificata nell’URL. • Controlla se la risorsa richiesta è contenuta nella cache disco del browser. [mediante ricerca hash] – Se la copia è valida, il browser la visualizza. – Se l’utente ha esplicitamente effettuato un RELOAD, un buon browser cercherà di risparmiare tempo effettuando solo una richiesta HTTP con metodo GET al server con linea “If-modified-since” per controllare se la copia nella cache è ancora valida o meno. • Si passa alla fase successiva nel caso in cui l’oggetto vada acquisito. Reti di Calcolatori 2009/2010 - World Wide Web 68 Azioni di un browser (2) Fase di lookup • Il browser acquisisce dall’utente l’URL da richiedere. • Il browser invoca il resolver per conoscere, tramite il sistema di naming del DNS, l’indirizzo IP dell’URL cercato.  Se esistente, il DNS restituisce l’indirizzo IP. Il lookup è quasi sempre implementato con una chiamata di sistema bloccante, per cui il browser non può effettuare altre operazioni fino a che l’operazione di lookup si conclude con successo o insuccesso. Reti di Calcolatori 2009/2010 - World Wide Web 69 4
  • 5. Azioni di un browser (3) Fase di richiesta  A questo punto, il browser attiva una connessione TCP con l’host che ha l’indirizzo IP individuato.  Sfruttando questa connessione, il browser richiede mediante il protocollo HTTP la risorsa specificata nell’URL.  Il server Web invia il file richiesto. • Operazione di parsing: – il browser analizza se vi sono oggetti allegati alla pagina (embedded URL) – in caso affermativo, il browser effettua una richiesta per ciascuna risorsa collegata (Ricordare la differenza tra protocollo HTTP/1.0 e HTTP/1.1) Reti di Calcolatori 2009/2010 - World Wide Web 70 Azioni di un browser (4) Fase di visualizzazione  Una volta inviati tutti gli oggetti (nel caso di protocollo HTTP/1.1) o dopo aver inviato ciascun oggetto (protocollo HTTP/1.0), il server chiude la connessione TCP.  Non appena riceve il primo file, il browser analizza come visualizzare sul monitor il testo contenuto nella pagina.  Il browser carica e mostra gli eventuali oggetti allegati alla pagina. Nel caso in cui l’oggetto ricevuto è in qualche formato non direttamente interpretabile dal browser, questi può attivare un apposito programma plug-in che ne consente la visualizzazione. Reti di Calcolatori 2009/2010 - World Wide Web 71 5
  • 6. Software in esecuzione sulla macchina client DNS Resolver HTML Visualizzato dal browser JPEG Web Web Tipo Visualizzato dal server browser MIME browser grafico (tipicamente, un plug-in esterno) Chemical (Netscape API) Visualizzato da opportuni programmi Applicativo client Reti di Calcolatori 2009/2010 - World Wide Web 72 Caching nel browser • Il browser gestisce uno spazio disco (di dimensione predefinita) in cui memorizza i file dei server Web recuperati corrispondenti a: – pagine HTML – immagini • In realtà, prima di effettuare una richiesta al server Web (vedi “azioni di un browser – fase 3”), il browser controlla se nella cache vi è una copia dell’oggetto richiesto. • L’utente può forzare il prelievo dell’oggetto dal server Web (bypassando la cache del browser) mediante un opportuno pulsante del browser: – REFRESH/AGGIORNA (Microsoft Explorer) – RELOAD/RICARICA (Netscape Navigator) • Gli oggetti nella cache possono avere un timestamp che indica il periodo di validità dell’oggetto (stabilito dal server). Il client eventualmente, effettua una richiesta if-modified-since al server Web. Reti di Calcolatori 2009/2010 - World Wide Web 73 6
  • 7. Parte 9 Modulo 6: Server HTTP Macro-componenti del Web Client oggetto Web (5) browser richiesta URL (4) INTERNET (1) server Web (3) 144.55.62.18 144.55.62.18 root (2) name server www.unimo.it? name server locale name server autoritativo per www.unimo.it Reti di Calcolatori 2009/2010 - World Wide Web 75 7
  • 8. Web come interfaccia universale • Il Web da servizio di rete autonomo è divenuta l’interfaccia preferita per moltissimi servizi informatici: – Lettura e-mail – Accesso a sistemi informativi aziendali – Compilazione e sottomissione form (anche prenotazioni) – … • Ne consegue che il Web è un elemento critico per molti altri aspetti “sociali”: – Sicurezza e privacy delle informazioni – Distribuzione e Copyright dell’informazione digitale – Commercio elettronico – … Reti di Calcolatori 2009/2010 - World Wide Web 76 Componenti di un sito Web • Piattaforma hardware • Software di base • Server Web – Il processo server HTTP ed il relativo software che viene eseguito sulla piattaforma stabilisce il collegamento tra la piattaforma (hardware - software di base) e la parte informativa del sito Web. • Parte informativa e servizi del sito Web – Il sito deve mettere a disposizione un insieme di risorse Web che possono essere richieste dai client con cui vengono instaurate delle connessioni HTTP. Reti di Calcolatori 2009/2010 - World Wide Web 77 8
  • 9. Componenti di un sito Web • Piattaforma hardware • Software di base • Server Web – Il processo server HTTP ed il relativo software che viene eseguito sulla piattaforma stabilisce il collegamento tra la piattaforma (hardware - software di base) e la parte informativa del sito Web. • Parte informativa e servizi del sito Web – Il sito deve mettere a disposizione un insieme di risorse Web che possono essere richieste dai client con cui vengono instaurate delle connessioni HTTP. Reti di Calcolatori 2009/2010 - World Wide Web 78 Parte informativa • Generalmente organizzata in risorse iper-mediali con link verso altre risorse (interne ed esterne al sito Web). • L’organizzazione delle pagine è tipicamente gerarchica ad albero, in cui vi è un punto di partenza e tutte le altre pagine sono poste al di sotto della radice dell’albero. • L’albero delle pagine Web è organizzato in modo simile ad un file system gerarchico con una radice e directory che contengono altre directory o file. Reti di Calcolatori 2009/2010 - World Wide Web 79 9
  • 10. Organizzazione delle pagine (1) • Ogni pagina Web ha un nome unico, che corrisponde al cammino assoluto dalla radice “/” dell’albero delle pagine. (Questo cammino è proprio quello specificato nella parte pathname dell’URL richiesto dal client.) File system del server Albero delle pagine del sito Web Reti di Calcolatori 2009/2010 - World Wide Web 80 Organizzazione delle pagine (2) • L’albero delle pagine Web non riflette necessariamente la vera organizzazione dei file all’interno del file system. • L’organizzazione fisica che rispecchia fedelmente quella logica è solo una delle possibili alternative. • Per motivi di efficienza organizzativa (gruppi differenti possono creare o fornire le informazioni per le pagine) o di efficienza nella risposta, l’albero delle pagine Web può essere partizionato tra due o più dischi della stessa piattaforma o addirittura tra piattaforme differenti, utilizzando o meno meccanismi di Network File System. Reti di Calcolatori 2009/2010 - World Wide Web 81 10
  • 11. Organizzazione delle pagine (3) • Mirroring – l’intero albero è replicato su più dischi o piattaforme • Soluzioni intermedie – le parti superiori dell’albero, ovvero le pagine più frequentemente richieste, sono replicate – le altre pagine possono essere o meno partizionate Ciascuna di queste organizzazioni deve essere trasparente per l’utente, che deve poter navigare e richiedere le pagine nello stesso identico modo, indipendentemente dall’organizzazione fisica dei file e dei servizi Web. Reti di Calcolatori 2009/2010 - World Wide Web 82 Tipi di risorse - 1 (classificazione sulla base del contenuto) • pagina HTML • testo in formato ASCII • pagina preformattata (come PostScript, PDF) • immagine in diversi formati (tipo GIF, JPEG) • suono codificati in diversi formati (quali AU, AIFF, MP3) • video in diverse rappresentazioni (quali Quicktime, MPEG) • rappresentazione VRML di scene tridimensionali • codice eseguibile in linguaggi interpretati (tipo Perl e shell) • codice eseguibile in linguaggi compilati, tipo C • codice Java Reti di Calcolatori 2009/2010 - World Wide Web 83 11
  • 12. Tipi di risorse - 2 (classificazione funzionale) Risorse statiche pagine il cui contenuto è relativamente stabile nel tempo. Risorse volatili pagine il cui contenuto viene modificato da eventi in corso. Es., ultime notizie, avvenimenti sportivi, titoli in borsa. Risorse dinamiche pagine il cui contenuto è creato dinamicamente sulla base della richiesta del client. Es., CGI. Risorse attive pagine in cui il server Web invia un applet Java al browser, che esegue il contenuto sulla piattaforma client. Reti di Calcolatori 2009/2010 - World Wide Web 84 Componenti di un sito Web • Piattaforma hardware • Software di base • Server Web – Il processo server HTTP ed il relativo software che viene eseguito sulla piattaforma stabilisce il collegamento tra la piattaforma (hardware - software di base) e la parte informativa del sito Web. • Parte informativa e servizi del sito Web – Il sito deve mettere a disposizione un insieme di risorse Web che possono essere richieste dai client con cui vengono instaurate delle connessioni HTTP. Reti di Calcolatori 2009/2010 - World Wide Web 85 12
  • 13. Fasi di una comunicazione TCP • Dichiarazione al sistema operativo che si intende instaurare una connessione con specifica delle caratteristiche • Apertura della connessione (differente dal lato server rispetto al lato client):  il server assume di definire la connessione prima del client, e rimane in attesa che il client si connetta alla porta specificata  il client assume che il server sia già attivo e prova a connettersi specificando indirizzo e porta del server • Scambio di dati bidirezionale (trasmissione e ricezione) • Chiusura della connessione Reti di Calcolatori 2009/2010 - World Wide Web 86 Server HTTP (es., richiesta oggetto statico) Client (browser) DNS Server HTTP Coda Coda DNS lookup SYN-RCVD ACCEPT Listen Socket ACCEPT CPU memoria disco Reti di Calcolatori 2009/2010 - World Wide Web 87 13
  • 14. Gestione richieste multiple • Il server deve specificare una porta che identifica il servizio sull’host • Tuttavia, più client possono richiedere il servizio in rapida successione • Due soluzioni: – Accodamento della richiesta client arrivata dopo Gestito automaticamente dal sistema operativo; il processo server deve specificare solo la lunghezza (backlog) della coda – Gestione contemporanea di più richieste client Possibile mediante la gestione del multitasking da parte del sistema operativo Reti di Calcolatori 2009/2010 - World Wide Web 88 Tre modalità di gestione richieste HTTP Piattaforma client Browser Richiesta Richiesta http http Risposta (1) Richiesta Risposta (i) http Risposta http http http Processo (a) (c) processo server (4) listener-dispatcher (b) (2) fork thread 1 (ii) (iv) thread 2 helper 1 Processo thread 3 (iii) helper 2 figlio thread 4 helper 3 Metodo fork Metodo multithread Metodo helper (3) Apache 1.3.x Piattaforma server Apache 2.x Reti di Calcolatori 2009/2010 - World Wide Web 89 14
  • 15. Un problema apparente ... • Una porta viene assegnata ad un servizio, ma nel caso del multitasking vi potrebbero essere più processi server attivi • D’altro canto, le richieste di un client devono essere inviate al processo server corretto • Soluzione: Usare sia le informazioni del server sia le informazioni del client per indirizzare i pacchetti • Il TCP usa 4 informazioni per identificare una connessione: – indirizzo IP del server – numero di porta del protocollo lato server – indirizzo IP del client – numero di porta del protocollo lato client Reti di Calcolatori 2009/2010 - World Wide Web 90 Software per server Web Reti di Calcolatori 2009/2010 - World Wide Web 91 15
  • 16. Parte 9 Modulo 7: Server HTTP – parte informativa Sito “statico”: Sintesi azioni server Web Il compito del server che fornisce pagine Web statiche è molto semplice: – attendere da parte dei browser richieste di connessione TCP attraverso cui ricevere una richiesta HTTP – decifrare il campo pathname dell’URL della richiesta per determinare il file cercato – controllare se il file è disponibile – in caso affermativo, spedire il file al browser attraverso la connessione TCP aperta – chiudere la connessione subito dopo aver inviato l’ultimo pacchetto concernente il file (nel caso di protocollo HTTP/1.0) Reti di Calcolatori 2009/2010 - World Wide Web 93 16
  • 17. Architettura del sito Web “statico” Client oggetto Web (5) browser richiesta URL Server HTTP Sistema operativo (4) INTERNET (1) DATI (3) sito Web 144.55.62.18 root (2) name server www.unimo.it? name server locale name server autoritativo per www.unimo.it Reti di Calcolatori 2009/2010 - World Wide Web 94 Risorse dinamiche Alcune risorse Web non sono file multimediali, ma programmi da eseguire. L’utente non ha bisogno di rendersi conto che l’URL richiesto corrisponde ad un programma, in quanto il server trasmette al client il risultato dell’esecuzione e non il programma. 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 • Interrogazioni a motori di ricerca • Interazione personalizzata tra utente e server, che consente all’utente di effettuare accessi riservati, ricerche, acquisti e transazioni Reti di Calcolatori 2009/2010 - World Wide Web 95 17
  • 18. Architettura di un semplice sito Web “dinamico” Client browser oggetto Web richiesta URL Server HTTP Data Base Sistema operativo SO DATI Sito Web Le architetture e tecnologie per siti Web dinamici sono alla base dei servizi offerti via rete più complessi e “a rischio” Reti di Calcolatori 2009/2010 - World Wide Web 96 Classificazione delle tecnologie • Tecnologie che prevedono processi esterni al processo server HTTP – Tecnologia Common Gateway Interface (CGI) – Servlet Java • 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) • Tecnologie distribuite ad oggetti – Tecnologia distribuita ad oggetti (CORBA) – Java2 Enterprise Edition (J2EE) – Microsoft .NET Reti di Calcolatori 2009/2010 - World Wide Web 97 18
  • 19. Parte 8 Modulo 8: Evoluzione del “Web dinamico” Motivazione • Il Web trascende la sua funzione di tecnologia per – semplificare il request/reply di file statici (get) – facilitare il reperimento di file (navigazione point&click) • Per diversi motivi, la tecnologia Web è ormai l’interfaccia eletta per l’interazione della maggior parte (tutti?) dei servizi che si possono usufruire via rete: – interrogazioni: a database, a motori di ricerca, … – comunicazioni: posta elettronica, blog, … – download/upload file – fruizione di contenuti multimediali – svariati applicativi: dai gestionali in su –… Reti di Calcolatori 2009/2010 - World Wide Web 99 19
  • 20. Evoluzione • Terminale “stupido” di mainframe Dipendenza totale • Client/server, dove il client va Forte interazione inteso come software specifico per interagire con quel server. Forte interazione tra i due software. • Il client diventa un software browser-like e il server è in grado Interazione lasca di rispondere • Web services Completo svincolo Reti di Calcolatori 2009/2010 - World Wide Web 100 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 Reti di Calcolatori 2009/2010 - World Wide Web 101 20
  • 21. Una prima architettura per siti Web “dinamici” (non è solo così!) Client browser oggetto Web richiesta URL Server HTTP Data Base Sistema operativo SO DATI Sito Web Le architetture e tecnologie per siti Web dinamici sono alla base dei servizi offerti via rete più complessi Reti di Calcolatori 2009/2010 - World Wide Web 102 Risorse dinamiche • Alcune risorse Web non sono file multimediali, ma richiedono l’esecuzione di (uno o più) programmi • L’aspetto importante è che l’utente non ha bisogno di rendersi conto che l’URL richiesto corrisponde ad un programma né che vi sia l’interazione con due o più server, in quanto il server HTTP trasmette il risultato dell’esecuzione e non il programma ( risorse attive)  RICORDARE L’OBIETTIVO TRASPARENZA Reti di Calcolatori 2009/2010 - World Wide Web 103 21
  • 22. 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à Reti di Calcolatori 2009/2010 - World Wide Web 104 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 Reti di Calcolatori 2009/2010 - World Wide Web 105 22
  • 23. 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 Reti di Calcolatori 2009/2010 - World Wide Web 106 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) Reti di Calcolatori 2009/2010 - World Wide Web 107 23
  • 24. 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) Reti di Calcolatori 2009/2010 - World Wide Web 108 Evoluzione architetture lato Web server Front-end Router/ HTTP Firewall server(s) (Presentation HTTP LAN server(s) (Presentation logic) logic) Web application (Business logic) server(s) HTTP (Presentation server(s) logic) Back-end (Data logic - Back-end (Data logic - server(s) DB server) server(s) DB server) Web (Business application logic) server(s) Back-end (Data logic - server(s) DB server) Reti di Calcolatori 2009/2010 - World Wide Web 109 24
  • 25. 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 Reti di Calcolatori 2009/2010 - World Wide Web 110 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) - Sun  Oracle  Postgress (open source) … Reti di Calcolatori 2009/2010 - World Wide Web 111 25
  • 26. Livelli definiti: Presentation & Data HTTP (Presentation Front tier server logic) Middle tier ? (Business logic) Back-end (Data logic) Back-end tier server Reti di Calcolatori 2009/2010 - World Wide Web 112 Livello Business logic • Il più interessante e in continua evoluzione • PROSSIMO OBIETTIVO Analizzare le tecnologie software che consentono la realizzazione di cosiddetti sistemi Web multi-livello (multi-tier) per realizzare servizi (non solo siti) Web-based dinamici Reti di Calcolatori 2009/2010 - World Wide Web 113 26
  • 27. Tecnologie principali per middle tier 1. Tecnologie che prevedono processi esterni al server HTTP 2. Linguaggi di scripting 3. Tecnologie distribuite ad oggetti Reti di Calcolatori 2009/2010 - World Wide Web 114 Tecnologie per middle tier (I) • Tecnologie che prevedono processi esterni al server HTTP HTTP – basate su Common Gateway server(s) (Presentation logic) Interface (CGI): script in C o Perl Web (Business application (molto popolare, perché?) server(s) logic) – il server HTTP crea un nuovo processo per il programma CGI che Back-end (Data logic - dovrà essere eseguito ( copia server(s) DB server) programma, allocazione memoria, ambiente di variabili separato, ecc.)  TECNOLOGIA NON SCALABILE CGI-based (per un server che deve gestire molte (Presentation+ richieste, questo è inaccettabile) Business processi separati) Reti di Calcolatori 2009/2010 - World Wide Web 115 27
  • 28. Tecnologia CGI (primo standard de facto per applicazioni) 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 proposto da 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 è storicamente importante: spesso script e gateway vengono chiamati rispettivamente script CGI e gateway CGI Reti di Calcolatori 2009/2010 - World Wide Web 116 Primo passo di evoluzione • Se il problema è la scalabilità limitata • Se il limite alla scalabilità è dovuto principalmente alla necessità e al costo 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 Reti di Calcolatori 2009/2010 - World Wide Web 117 28
  • 29. Tecnologie per middle tier (II) • FastCGI: permette di condividere un’istanza di un programma CGI • Server API (Netscape NSAPI, HTTP (Presentation MS ISAPI): Librerie condivise server(s) Logic + caricate nello spazio del server Web application Business logic) HTTP, in grado di servire server(s) richieste multiple senza creare nuovi processi  poca Back-end (Data logic, server(s) DB server) portabilità (legate al server HTTP) e vulnerabili (thread safe) • ColdFusion (Presentation+ Business integrati) Reti di Calcolatori 2009/2010 - World Wide Web 118 Tecnologie per middle tier (II bis) • Linguaggi di scripting HTTP (Presentation server(s) – codice inserito nelle pagine Web Logic + Business logic) application HTML ed interpretato server(s) direttamente dal server HTTP, ma meno legato a uno Back-end (Data logic - DB server) server(s) specifico server HTTP (Presentation+ Business integrati) Reti di Calcolatori 2009/2010 - World Wide Web 119 29
  • 30. Alcuni linguaggi di scripting • Active Server Pages (ASP, MS): scritte in HTML + VBScript  Soluzione specifica per server HTTP (IIS), problemi di manutenibilità 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” - Il linguaggio delle architetture “open” LAMP (Linux, Apache, MySQL, Php) Reti di Calcolatori 2009/2010 - World Wide Web 120 Altri linguaggi di scripting “per intenditori” • Perl: il linguaggio per il parsing, la gestione di stringhe e espressioni regolari. Non difficile da apprendere, molto difficile rendere efficienti le applicazioni • Python: linguaggio di scripting a oggetti. Linguaggio in crescita, sebbene molto oneroso dal punto di vista computazionale e strettamente legato alla piattaforma “Zope” • Ruby: linguaggio di scripting a oggetti. Uno scalino di apprendimento molto alto rispetto ad altri linguaggi di scripting, ma dalle potenzialità enormi. In grande crescita anche per la diffusione di framework quali “Ruby On Rails” (ROR) Reti di Calcolatori 2009/2010 - World Wide Web 121 30
  • 31. 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 possibilità di riutilizzo del software Reti di Calcolatori 2009/2010 - World Wide Web 122 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à ? Reti di Calcolatori 2009/2010 - World Wide Web 123 31
  • 32. Tecnologie per middle tier (III) • Tecnologie distribuite ad oggetti – Ogni oggetto ha un’interfaccia (insieme di metodi pubblici) LAN – Il codice può essere eseguito dove serve (portabilità) HTTP (Presentation – Promuove la generalità: molte server(s) logic) applicazioni possono usare business object comuni Web – Migliora la manutenibilità: con (Business application logic) buona interfaccia, cambiamenti server(s) influenzano solo l’oggetto Back-end (Data logic - Distribuite a oggetti server(s) DB server) (Presentation+ Business separati) Reti di Calcolatori 2009/2010 - World Wide Web 124 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! HTTP (Presentation Front tier server logic) Web application (Business Middle tier server logic) Back-end tier Back-end (Data logic) server Reti di Calcolatori 2009/2010 - World Wide Web 125 32
  • 33. 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 Web-based • Implementato mediante: – Tecnologie middleware (una miriade ) Reti di Calcolatori 2009/2010 - World Wide Web 126 Due tecnologie attuali di successo e una che non ce l’ha fatta • CORBA (standard de jure degli anni ’90, non è riuscito ad affermarsi) • Open source SI ANALIZZERA’ Java2 Enterprise Edition (J2EE) - SUN • Proprietaria Articoli: J2EE vs .NET .NET - Microsoft su Google Reti di Calcolatori 2009/2010 - World Wide Web 127 33
  • 34. Parte 4 Modulo 6: Cenni allo “storico” CGI (Common Gateway Interface) 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 Reti di Calcolatori 2009/2010 - World Wide Web 129 34
  • 35. 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) Reti di Calcolatori 2009/2010 - World Wide Web 130 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 Reti di Calcolatori 2009/2010 - World Wide Web 131 35
  • 36. Suddivisione dello spazio server Area Browser WWW Il server fornisce file (statici o volatili) tipo file Il server esegue script CGI che Area creano documenti dinamici CGI File system del server Albero degli Albero delle pagine eseguibili (“/cgi-bin/”) del sito Web (“/”) Reti di Calcolatori 2009/2010 - World Wide Web 132 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 Reti di Calcolatori 2009/2010 - World Wide Web 133 36
  • 37. 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 Reti di Calcolatori 2009/2010 - World Wide Web 134 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) Reti di Calcolatori 2009/2010 - World Wide Web 135 37
  • 38. Tag <FORM> di HTML <FORM> </FORM> Attributi: METHOD=GET METHOD=POST ACTION=“http://www.unimo.it/cgi-bin/script.cgi” <INPUT> Attributi: TYPE=TEXT (input testuale) TYPE=CHECKBOX (selezione) TYPE=RADIO (selezione esclusiva) TYPE=SUBMIT (tasto per inviare i dati) TYPE=RESET (tasto per cancellare i dati) NAME=“etichetta” VALUE=“valore_associato” (se selezionato) CHECKED (selezionato per default) <SELECT> <OPTION>...</SELECT> (menù a tendina) Attributi: NAME=“etichetta” Reti di Calcolatori 2009/2010 - World Wide Web 136 Un esempio di Fill-in Form un esempio di form Dove studi? 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> Reti di Calcolatori 2009/2010 - World Wide Web 137 38
  • 39. 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) Reti di Calcolatori 2009/2010 - World Wide Web 138 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) Reti di Calcolatori 2009/2010 - World Wide Web 139 39
  • 40. 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 Reti di Calcolatori 2009/2010 - World Wide Web 140 GET POST Indicato per pochi Indicato per grandi parametri (<1024 byte) quantità di dati Solo parametri testuali Dati in qualsiasi formato (testi, immagini, video) Possibilità di inserire un URL con parametri Solo in risposta ad una opportuni all’interno di fill-in form una pagina HTML. Esempio: <A HREF= “http://www.unimo.it /cgi-bin/search?query=ingegneria> Ricerca Facoltà Ingegneria </A> Reti di Calcolatori 2009/2010 - World Wide Web 141 40
  • 41. 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 Reti di Calcolatori 2009/2010 - World Wide Web 142 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. Reti di Calcolatori 2009/2010 - World Wide Web 143 41
  • 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 Reti di Calcolatori 2009/2010 - World Wide Web 144 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 Reti di Calcolatori 2009/2010 - World Wide Web 145 42
  • 43. 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 Reti di Calcolatori 2009/2010 - World Wide Web 146 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 */ … } Reti di Calcolatori 2009/2010 - World Wide Web 147 43
  • 44. 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 Reti di Calcolatori 2009/2010 - World Wide Web 148 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 Reti di Calcolatori 2009/2010 - World Wide Web 149 44
  • 45. 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 Reti di Calcolatori 2009/2010 - World Wide Web 150 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 Reti di Calcolatori 2009/2010 - World Wide Web 151 45
  • 46. Esempio http://www.dsi.unimore.it/cgi-bin/phone #!/bin/sh Un semplice esempio di script echo Content-type: text/html if [ $# = 0 ] shell che accede al file Unix then echo "<HEAD>" /apps/data/Phone_Directory echo "<!-- Written by B Kelly --!>" echo "<TITLE>Search Phone Directory</TITLE>" mediante il comando grep. Per echo "<ISINDEX>" echo "</HEAD>" trovare il numero telefonico echo "<BODY>" della persona specificata nella echo "<H1>University Phone Directory</H1>" echo "Enter name of the person in the box.<P>" prima parte (fill-in form). echo "</BODY>" else echo "<HEAD>" echo "<TITLE>Results of Search</TITLE>" Si noti l’uso di tag HTML per la echo "</HEAD>" creazione e la visualizzazione echo "<BODY>" echo "<H1>Results of Search for $* </H1>" del testo con layout. echo "<PRE><TT>" grep -i "$*" /apps/data/Phone_Directory echo "</PRE></TT>" echo "</BODY>" fi Reti di Calcolatori 2009/2010 - World Wide Web 7.152 1. Esecuzione script (azione client) • Il browser, dopo aver localizzato l’indirizzo IP del computer corrispondente all’hostname www.dii.unimore.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/* Reti di Calcolatori 2009/2010 - World Wide Web 153 46
  • 47. 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) Reti di Calcolatori 2009/2010 - World Wide Web 154 3. Esecuzione script (esecuzione) browser Server HTTP phone (CGI) Piattaforma client grep (Unix) Piattaforma server Reti di Calcolatori 2009/2010 - World Wide Web 155 47
  • 48. 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 ... > Reti di Calcolatori 2009/2010 - World Wide Web 156 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”. Reti di Calcolatori 2009/2010 - World Wide Web 157 48
  • 49. 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>" Reti di Calcolatori 2009/2010 - World Wide Web 158 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. Reti di Calcolatori 2009/2010 - World Wide Web 159 49
  • 50. 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. Reti di Calcolatori 2009/2010 - World Wide Web 160 Esecuzione 1. Il server capisce che l’URL richiesto è un CGI 2. Istanzia un processo che esegue il CGI – Il processo a sua volta crea un nuovo processo che esegue il comando grep 3. Invia l’output dello script al client Reti di Calcolatori 2009/2010 - World Wide Web 161 50
  • 51. 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 Reti di Calcolatori 2009/2010 - World Wide Web 162 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 Reti di Calcolatori 2009/2010 - World Wide Web 163 51
  • 52. CGI: Pro e Contro • Vantaggi – Semplice da programmare – Indipendente dal linguaggio e dalla piattaforma – Primo standard de facto per il Web dinamico • 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) Reti di Calcolatori 2009/2010 - World Wide Web 164 52

×