Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Il WEB ed HTTP
! !
Una possibile soluzione alla proliferazione di differenti protocolli utilizzati su Internet Origini
Tim Berners-Lee propose il WEB al CERN (Conseil
Europen pour la Recherche Nuclaire - Consiglio Europeo per la Ricerca Nucleare) nel 1989
Sito Web
Insieme coordinato di pagine, relative ad uno stesso tema, che risiedono tipicamente su uno stesso server HTTP
Le basi furono gettate su un computer NeXT, implementazione alla fine del 1990, nel 1991 il sistema fu portato su altre piattaforme e reso disponibile a tutti
Tecnologie di Sviluppo per il WEB 3
World Wide Web Consortium (W3C) un consorzio di aziende e centri di ricerca che si occupa dello sviluppo e della standardizzazione del Web ! Mission
Condurre il World Wide Web al suo pieno potenziale sviluppando protocolli e linee guida per assicurare la crescita a lungo termine del Web
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 4
WEB browser
!
Mosaic
Sviluppato da NCSA (National Center for SuperComputing Applications presso lUniversit dellIllinois) Il primo ad utilizzare una GUI, ha portato allesplosione delluso del WEB Allinizio funzionava solo per X-Windows sotto Unix, alla fine del 1993 fu portato sotto altre piattaforme
richiesta pagina
pagina
client server
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 5
Oggi:
Firefox, Netscape, IE, Opera, Safari, Mozilla, Amaya,
WEB server
! !
WEB server
! Apache
http://httpd.apache.org Gratuito, distribuito con Linux Disponibile anche sotto Mac OS X, Windows, Unix, Usato dal 70% dei server
Un Server Web un programma che fornisce documenti ai browser che ne fanno richiesta. I documenti possono essere statici o dinamici. I documenti dinamici sono costruiti da programmi che sono memorizzati sul server. Ad esempio, un browser invia al server un modulo compilato e richiede ad un programma, che risiede dal lato del server (server-side), di elaborare i dati specificati nel modulo
Tecnologie di Sviluppo per il WEB 7
! ISS
Nel febbraio del 1995, il pi popolare web server era il daemon per HTTP (httpd), di pubblico dominio, sviluppato da Rob McCool presso il National Center for Supercomputing Applications (NCSA) dellUniversity of Illinois Lo sviluppo di questo daemon era in stallo da met del 1994 perch McCool aveva lasciato NCSA.
Tecnologie di Sviluppo per il WEB 10
Caratteristiche di Apache
! !
Molti webmaster avevano sviluppato le proprie estensioni e corretto vari bug Un piccolo gruppo di questi webmaster iniziarono a collaborare per coordinare i loro cambiamenti al server (sotto forma di pach) Alla fine del febbraio 1995, otto di tali webmaster gettarono le basi dellApache Group originario.
http://httpd.apache.org/ABOUT_APACHE.html
! Apache: ! Stabilit
poter individuare ed accedere a risorse sul WEB necessario un meccanismo per poterle identificare (tramite un nome) e localizzare (tramite un indirizzo) ! Una URL indica la collocazione reale di una risorsa accessibile mediante uno dei protocolli (HTTP) attualmente in uso su Internet
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 13
! Le
! Una
identificatore dell'host sul quale risiede la risorsa, espresso mediante un nome di dominio o un indirizzo IP
carprera.dia.unisa.it
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 14
! Terza
stringa di identificazione della risorsa sul server (path) preceduta dal simbolo '/';
la sua interpretazione dipende dallo schema di denominazione; il simbolo '/' viene utilizzato per denotare una struttura gerarchica, con la parte a sinistra indicante il livello superiore /TSW/index.shtml
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 15
! Lidentificatore
pu essere seguito da
l'indicatore della porta del server a cui collegarsi preceduto dal simbolo ':';
! Esempio
di URL
Tecnologie di Sviluppo per il WEB 16
http://www.dia.unisa.it/TSW/ESAMI/orali.html
Prof. Carlo Blundo
http per il protocollo HTTP ftp: per il File Transfer Protocol gopher: per il Gopher protocol mailto: per gli indirizzi di posta elettronica news: per i messaggi dei newsgroup NNTP wais: per i server WAIS file: per l'accesso a file locali telnet, rlogin, tn3270: per riferirsi a sessioni interattive in modalit terminale
Tecnologie di Sviluppo per il WEB 17
HTTP
Hypertext Transfer Protocol
HTTP
! Protocollo
Il browser (user agent) analizza lURL e ne estrae il dominio Il browser consulta il DNS per ottenere lindirizzo IP corrispondente al dominio Il browser apre una connessione TCP con il web server (usa la porta 80) I messaggi HTTP sono di 2 tipi:
request / response
Una volta stabilita la connessione, il browser richiede una risorsa al web server (request) e il server risponde inviando o la risorsa richiesta oppure un messaggio di errore (response)
19
20
Caratteristiche di HTTP
! HTTP
Connessione HTTP
HTTP 0.9 C S
open close open close open close
HTTP 1.0 C S
open close open close open close
differenza principale tra HTTP 1.0 e 1.1 stata la possibilit di specificare coppie multiple di richiesta e risposta nella stessa connessione
Tecnologie di Sviluppo per il WEB 21
close close
(solo GET)
Prof. Carlo Blundo
Messaggi HTTP
! !
HTTP stateless Il server non mantiene alcuna informazione sulle richieste passate del client I protocolli che conservano lo stato sono molto complessi
La storia passata (stato) deve essere mantenuta
Il protocollo definisce il formato dei messaggi request e response hanno lo stesso formato e seguono la struttura di un messaggio di email (RFC 822):
start-line
pu essere o una request-line o una status-line
Se il server od il client interrompe la connessione, allora la visione degli stati di server e client possono essere inconsistenti e deve essere riconciliata
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 23
Esempio di request
request line (GET, POST, HEAD, PUT) GET /TSW/esami.html HTTP/1.0 User-agent: Mozilla/4.0 header Accept: text/html, image/gif,image/jpeg lines Accept-language:it (ulteriore carriage return, line feed)
Message Body
carriage return + line feed indicano la fine dellintestazione, pu iniziare il corpo (body) del messaggio parte opzionale
25 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 26
...
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 27 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 28
spazio
Metodi HTTP
!
Analizzeremo solo:
GET (Richiesta di dati) HEAD (Richiesta al server di header HTTP contenenti informazioni) POST (Invio di dati allURL indicato) PUT (Colloca i dati contenuti nel BODY allURL indicato)
Method
= | | |
| | | |
30
Il metodo GET
!
Il metodo HEAD
! !
Simile al GET, ma non viene restituita una risorsa Si usa per ottenere informazioni sulla risorsa
31
32
GET ed HEAD
! GET
Il metodo POST 1
! POST,
e HEAD devono essere implementati dal server altri metodi sono facoltativi
! Gli
pur essendo una request, contiene un message body ! POST serve per inviare una risorsa a un URL senza crearne una nuova ! POST non sicuro n idempotente ! Ad esempio, si utilizza per:
Inviare un messaggio a un indirizzo di posta elettronica Inviare il contenuto di un modulo ad un programma che risiede sul server
33 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 34
Il metodo POST 2
! Non
una
Anche GET pu essere utilizzato per inviare dati al server o per modificare/creare nuove risorse
La risorsa invocata con GET un programma che
modifica se stesso estrae dati da una form HTML e crea un nuovo file HTML che li contiene
! Il
server, in risposta ad una POST, pu anche inviare una response con un message body
Dato che ci non era intenzionale da parte dellutente, allora GET considerato sicuro
! !
POST invia i dati nel corpo del messaggio di richiesta GET invia i dati come parte dellURL
Tecnologie di Sviluppo per il WEB 36
35
Esempio
Referer: http://caprera.dia.unisa.it/LASD/prenota.html
Content-Type: multipart/form-data; boundary= ---------------------------41184676334 Content-Length: 438
-----------------------------41184676334 Content-Disposition: form-data; name="nome" carlo -----------------------------41184676334 Content-Disposition: form-data; name="cognome" blundo -----------------------------41184676334 Content-Disposition: form-data; name="matricola" 53/7777 -----------------------------41184676334
37
38
Il metodo PUT
!
Il metodo PUT serve per trasmettere delle informazioni dal client al server, creando o sostituendo la risorsa specificata. In generale, largomento del metodo PUT la risorsa che ci si aspetta di ottenere facendo un GET in seguito con lo stesso nome. PUT idempotente ma non sicuro, e comunque non offre nessuna garanzia di controllo degli accessi o locking.
Tecnologie di Sviluppo per il WEB 40
Referer: http://caprera.dia.unisa.it/LASD/prenota.html
39
Esempio di response
HTTP/1.1 200 OK Date: Wed, 12 Feb 2003 12:43:01 GMT Server: Apache/1.3.22 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 16 Oct 2002 09:47:40 GMT ETag: "dbca-2-3dad35bc" Accept-Ranges: bytes Content-Length: 2 Connection: close Content-Type: text/html <HTML> <BODY> Ciao mondo! </BODY></HTML>
41 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 42
Status Code 1
! Lo
Status Code 2
3xx: Redirection
Il server ha ricevuto e capito la richiesta, ma sono necessarie altre azioni da parte del client per portare a termine la richiesta.
status code un numero di tre cifre, di cui la prima indica la classe della risposta, e le altre due la risposta specifica. Esistono le seguenti classi:
1xx: Informational
Una risposta temporanea alla richiesta, durante il suo svolgimento.
2xx: Successful
Il server ha ricevuto, capito e accettato la richiesta.
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 43
I cookie 1
!
HTTP stateless
Il server non mantiene alcuna informazione sulle vecchie richieste del client
46
I cookie 2
!I
cookies usano due extension-header1, uno per la risposta, ed uno per richieste successive:
Set-Cookie: header della risposta, il client pu memorizzare il valore del cookie indicato e rispedirlo alla prossima richiesta. Cookie: header della richiesta contenente il valore del cookie.
Il client decide se spedirlo sulla base del nome del documento, dellindirizzo del server, e dellet del cookie
1
server HTTP
applicazione CGI/PHP/JSP/
request
genera il cookie
+ Risposta
Set-Coo kie
Output +
cookie
request + Coo
kie
request + Co
Output
okie
analizza il cookie
Risposta
Non fanno parte degli header standard HTTP, ma che possono essere aggiunti ad HTTP
Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 47 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 48