Il protocollo http

55
1 Il protocollo http Il protocollo http

description

Il protocollo http. Web. Una pagina web è formata da oggetti . Gli oggetti possono essere file HTML, immagini (JPEG, GIF, PNG), applet Java, file audio,… Ogni oggetto è identificato da un URL. HTTP. HTTP. HTTP si appoggia a TCP . - PowerPoint PPT Presentation

Transcript of Il protocollo http

Page 1: Il protocollo http

11

Il protocollo httpIl protocollo http

Page 2: Il protocollo http

22

WebWeb

Una pagina web è formata da Una pagina web è formata da oggettioggetti.. Gli oggetti possono essere file HTML, immagini (JPEG, GIF, Gli oggetti possono essere file HTML, immagini (JPEG, GIF,

PNG), applet Java, file audio,…PNG), applet Java, file audio,… Ogni oggetto è identificato da un Ogni oggetto è identificato da un URLURL..

Page 3: Il protocollo http

33

HTTPHTTP

Page 4: Il protocollo http

44

HTTPHTTP

HTTP si appoggia a HTTP si appoggia a TCPTCP.. Il Il client client HTTP (il browser) HTTP (il browser) inizia una connessione inizia una connessione TCP sulla TCP sulla

porta 80 del server.porta 80 del server. Il Il serverserver HTTP (Web server) HTTP (Web server) accetta la connessione accetta la connessione TCP del TCP del

client.client. Client e server si Client e server si scambiano messaggiscambiano messaggi HTTP (attraverso le HTTP (attraverso le

socket).socket). Si Si chiudechiude la connessione TCP. la connessione TCP.

Page 5: Il protocollo http

55

HTTPHTTP

HTTP èHTTP è “stateless”“stateless”: il server non mantiene alcuna : il server non mantiene alcuna informazione sulle richieste dei vari client.informazione sulle richieste dei vari client.

I protocolli che mantengono lo stato sono complessi. Si devemantenere traccia della storia passata perché, se il server oil client si guastano, la loro visione dello stato può diventareinconsistente e deve essere ripristinata.

Page 6: Il protocollo http

66

Caratteristiche del protocollo HTTPCaratteristiche del protocollo HTTP Application levelApplication level

• Utilizza TCP.Utilizza TCP. Request/ResponseRequest/Response

• Quando la connessione è stata stabilita il browser invia una richiesta HTTP a cui Quando la connessione è stata stabilita il browser invia una richiesta HTTP a cui il server risponde.il server risponde.

StatelessStateless• Ogni richiesta HTTP contiene tutte le informazioni per essere servita.Ogni richiesta HTTP contiene tutte le informazioni per essere servita.• Il server non tiene traccia delle informazioni precedenti.Il server non tiene traccia delle informazioni precedenti.

Trasferimento bidirezionaleTrasferimento bidirezionale• Nella maggioranza dei casi il browser invia una richiesta di una pagina web e il Nella maggioranza dei casi il browser invia una richiesta di una pagina web e il

server invia una copia della pagina richiesta al browser.server invia una copia della pagina richiesta al browser.• HTTP consente anche trasferimenti dal browser al server (quando un utente invia HTTP consente anche trasferimenti dal browser al server (quando un utente invia

una form).una form).

Page 7: Il protocollo http

77

Caratteristiche del protocollo HTTPCaratteristiche del protocollo HTTP Capacità di negoziazioneCapacità di negoziazione

• HTTP consente al browser e al server di negoziare aspetti quali ad HTTP consente al browser e al server di negoziare aspetti quali ad esempio il set di caratteri usato. Una delle parti può specificare le esempio il set di caratteri usato. Una delle parti può specificare le capabilities che può offrire e l’altra parte può specificare le capabilities capabilities che può offrire e l’altra parte può specificare le capabilities che può accettare.che può accettare.

Supporto per il cachingSupporto per il caching• Per migliorare i tempi di risposta un browser memorizza in cache una Per migliorare i tempi di risposta un browser memorizza in cache una

copia di ogni pagina web che riceve. Se l’utente richiede una pagina copia di ogni pagina web che riceve. Se l’utente richiede una pagina precedentemente richiesta, HTTP permette al browser di interrogare il precedentemente richiesta, HTTP permette al browser di interrogare il server per determinare se i contenuti della pagina sono cambiati.server per determinare se i contenuti della pagina sono cambiati.

Supporto per intermediariSupporto per intermediari• HTTP consente di avere degli agenti intermedi nel percorso tra browser HTTP consente di avere degli agenti intermedi nel percorso tra browser

e server (proxy). I proxy possono avere dei meccanismi di caching.e server (proxy). I proxy possono avere dei meccanismi di caching.

Page 8: Il protocollo http

88

HyperText Transfer Protocol - HTTPHyperText Transfer Protocol - HTTP La natura stateless di HTTP si adatta bene al suo uso tipicoLa natura stateless di HTTP si adatta bene al suo uso tipico

• Una normale sessione di un utente di un browser web comporta il Una normale sessione di un utente di un browser web comporta il recupero di una sequenza di pagine e documenti web.recupero di una sequenza di pagine e documenti web.

• Questa sequenza (idealmente) deve essere acquisita in modo veloce Questa sequenza (idealmente) deve essere acquisita in modo veloce anche se le pagine e i documenti possono risiedere in più sistemi anche se le pagine e i documenti possono risiedere in più sistemi distribuiti su rete geografica.distribuiti su rete geografica.

HTTP è flessibile nei formati che può trattareHTTP è flessibile nei formati che può trattare• Quando un client inoltra una richiesta ad un server, può includere una Quando un client inoltra una richiesta ad un server, può includere una

lista di formati che può gestire, ordinata secondo dei livelli di priorità, lista di formati che può gestire, ordinata secondo dei livelli di priorità, ed il server può rispondere con il formato più appropriato.ed il server può rispondere con il formato più appropriato.

es.: un interprete lynx non può gestire immagini, pertanto un server web es.: un interprete lynx non può gestire immagini, pertanto un server web non ha bisogno di trasmettere le immagini contenute nelle pagine (non si non ha bisogno di trasmettere le immagini contenute nelle pagine (non si trasmettono informazioni inutili).trasmettono informazioni inutili).

Page 9: Il protocollo http

99

HTTP – Esempio di operazioniHTTP – Esempio di operazioni

Lo user agent è il client che genera la richiesta (browser Lo user agent è il client che genera la richiesta (browser web).web).

L’origin server è quello in cui risiede la risorsa richiesta L’origin server è quello in cui risiede la risorsa richiesta (pagina).(pagina).

Il client apre una connessione TCP end-to-end tra se stesso Il client apre una connessione TCP end-to-end tra se stesso ed il server ed inoltra una richiesta HTTP.ed il server ed inoltra una richiesta HTTP.• Questa richiesta è costituita da uno specifico comando (metodo), Questa richiesta è costituita da uno specifico comando (metodo),

da una URL ed un messaggio simile a quelli MIME che contiene da una URL ed un messaggio simile a quelli MIME che contiene alcuni parametri di richiesta, delle informazioni sul client e alcuni parametri di richiesta, delle informazioni sul client e talvolta alcune informazioni sul contenuto.talvolta alcune informazioni sul contenuto.

Page 10: Il protocollo http

1010

HTTP – Esempio di operazioniHTTP – Esempio di operazioni

Quando il server riceve la richiesta, tenta di eseguire il Quando il server riceve la richiesta, tenta di eseguire il recupero della pagina richiesta ed invia una risposta HTTP, recupero della pagina richiesta ed invia una risposta HTTP, che include informazioni sullo stato, un codice che indica il che include informazioni sullo stato, un codice che indica il successo o riporta errori avvenuti e un messaggio dalle successo o riporta errori avvenuti e un messaggio dalle caratteristiche simili a quelle di MIME, contenente delle caratteristiche simili a quelle di MIME, contenente delle informazioni relative al server, alla risposta stessa e informazioni relative al server, alla risposta stessa e all’eventuale contenuto del body del messaggio.all’eventuale contenuto del body del messaggio.

La connessione TCP viene chiusa.La connessione TCP viene chiusa.

Page 11: Il protocollo http

1111

HTTP – Esempio di operazioniHTTP – Esempio di operazioni

In questo caso non vi è una connessione TCP end-to-end tra lo user In questo caso non vi è una connessione TCP end-to-end tra lo user agent e il server. Sono presenti uno o più sistemi intermediari e delle agent e il server. Sono presenti uno o più sistemi intermediari e delle connessioni TCP tra sistemi “adiacenti”.connessioni TCP tra sistemi “adiacenti”.

Il protocollo HTTP definisce tre tipi di sistemi intermediari:Il protocollo HTTP definisce tre tipi di sistemi intermediari:• ProxyProxy

• GatewayGateway

• tunneltunnel

Page 12: Il protocollo http

1212

HTTP – ProxyHTTP – Proxy

Un proxy agisce per conto di altri client e inoltra le richieste ad un server, opera Un proxy agisce per conto di altri client e inoltra le richieste ad un server, opera come server nei confronti dei client e come client nei confronti del server.come server nei confronti dei client e come client nei confronti del server.

Intermediario di sicurezza:Intermediario di sicurezza: client e server separati da un firewall. client e server separati da un firewall.• Il client fa parte di una rete resa sicura da un firewall ed il server è esterno a questa rete.Il client fa parte di una rete resa sicura da un firewall ed il server è esterno a questa rete.• Il server deve autenticarsi con il firewall per stabilire una connessione con il proxy che Il server deve autenticarsi con il firewall per stabilire una connessione con il proxy che

accetta le risposte dopo che queste sono passate attraverso il sistema di sicurezza.accetta le risposte dopo che queste sono passate attraverso il sistema di sicurezza. Versioni diverse di HTTP:Versioni diverse di HTTP: il proxy può interpretare entrambe le versioni ed il proxy può interpretare entrambe le versioni ed

effettuare le conversioni.effettuare le conversioni. Il proxy è un agente che riceve una richiesta per un oggetto (identificato da una Il proxy è un agente che riceve una richiesta per un oggetto (identificato da una

URL), la modifica e la inoltra verso il server identificato dalla URL.URL), la modifica e la inoltra verso il server identificato dalla URL.

Page 13: Il protocollo http

1313

Proxy server: web cacheProxy server: web cache Permette di Permette di migliorare le prestazionimigliorare le prestazioni dell’accesso ad Internet dell’accesso ad Internet

soddisfacendo, quando possibile, le richieste dei vari client al soddisfacendo, quando possibile, le richieste dei vari client al posto dei server remoti.posto dei server remoti.

Page 14: Il protocollo http

1414

Proxy server: IP maskingProxy server: IP masking Inoltre, permette di rendere pubblico all’esterno Inoltre, permette di rendere pubblico all’esterno un solo indirizzo un solo indirizzo

IPIP, quello del proxy., quello del proxy.

Page 15: Il protocollo http

1515

Proxy server: access controlProxy server: access control Infine, può anche essere usato per Infine, può anche essere usato per controllare l’accesso alle controllare l’accesso alle

risorserisorse..

Page 16: Il protocollo http

1616

HTTP – GatewayHTTP – Gateway

Un gateway è un server che appare al client come se fosse il server d’origine, ed Un gateway è un server che appare al client come se fosse il server d’origine, ed agisce per conto del server o di server che potrebbero non essere in grado di agisce per conto del server o di server che potrebbero non essere in grado di comunicare direttamente con il client.comunicare direttamente con il client.

Server non-HTTP:Server non-HTTP: i browser possono contattare dei server con protocolli i browser possono contattare dei server con protocolli diversi (FTP, ecc.). Questa capacità può essere fornita mediante un gateway.diversi (FTP, ecc.). Questa capacità può essere fornita mediante un gateway.

• Il client invia una richiesta HTTP verso il server gateway e quest’ultimo contatta il server Il client invia una richiesta HTTP verso il server gateway e quest’ultimo contatta il server FTP per ottenere il risultato desiderato, che poi viene convertito in una forma adatta ad FTP per ottenere il risultato desiderato, che poi viene convertito in una forma adatta ad HTTP ed inviato al client.HTTP ed inviato al client.

Intermediario di sicurezza: client e server separati da un firewall rispetto al Intermediario di sicurezza: client e server separati da un firewall rispetto al quale il gateway si trova sullo stesso lato del server.quale il gateway si trova sullo stesso lato del server.

• Il server è all’interno di una rete protetta tramite un firewall ed il client è esterno a tale Il server è all’interno di una rete protetta tramite un firewall ed il client è esterno a tale rete.rete.

• Il client si deve autenticare al gateway il quale può passare la richiesta al server.Il client si deve autenticare al gateway il quale può passare la richiesta al server.

Page 17: Il protocollo http

1717

HTTP – TunnelHTTP – Tunnel

Un tunnel, a differenza del proxy e del gateway, non opera sulle Un tunnel, a differenza del proxy e del gateway, non opera sulle richieste/risposte HTTP.richieste/risposte HTTP.

Un tunnel è un punto di collegamento fra due connessioni TCP ed i Un tunnel è un punto di collegamento fra due connessioni TCP ed i messaggi HTTP vengono trasmessi inalterati come se ci fosse una messaggi HTTP vengono trasmessi inalterati come se ci fosse una singola connessione HTTP fra client e server.singola connessione HTTP fra client e server.• Non è necessario che questo sistema interpreti i contenuti dei messaggi.Non è necessario che questo sistema interpreti i contenuti dei messaggi.

Un esempio è quello di un firewall, in cui un client o un server, esterni Un esempio è quello di un firewall, in cui un client o un server, esterni ad una rete protetta, vogliono stabilire una connessione, mantenerla ad una rete protetta, vogliono stabilire una connessione, mantenerla ed usarla per transazioni HTTP.ed usarla per transazioni HTTP.

Page 18: Il protocollo http

1818

Uniform Resource Locator (URL)Uniform Resource Locator (URL) Ad ogni pagina web è assegnato un nome unico usato per identificare Ad ogni pagina web è assegnato un nome unico usato per identificare

la pagina, la URL.la pagina, la URL. La URL inizia con la specifica dello La URL inizia con la specifica dello schemescheme utilizzato per accedere utilizzato per accedere

all’elemento di informazione (pagina).all’elemento di informazione (pagina). Lo schema specifica il protocollo usato.Lo schema specifica il protocollo usato.

http://hostname[:port]/path[?query]http://hostname[:port]/path[?query] hostname hostname specifica il nome a domini o indirizzo IP dell’host;specifica il nome a domini o indirizzo IP dell’host; :port :port è un parametro opzionale richiesto solo se il numero di porta del server è è un parametro opzionale richiesto solo se il numero di porta del server è

diverso da 80;diverso da 80; path path è una stringa che identifica un particolare documento;è una stringa che identifica un particolare documento; ?query ?query è una stringa opzionale utilizzata quando il browser invia una query.è una stringa opzionale utilizzata quando il browser invia una query.

Page 19: Il protocollo http

1919

Struttura di una transazione HTTPStruttura di una transazione HTTP

Page 20: Il protocollo http

2020

Connessioni HTTPConnessioni HTTP

HTTP/1.0 [RFC 1945]

Su ogni connessione TCP si invia al più un oggetto.

Connessione NON persistente.

HTTP/1.1 [RFC 2616]

Più oggetti possono essere inviati sulla stessa connessione TCP.

Permette una connessione persistente.

Page 21: Il protocollo http

2121

HTTP non persistenteHTTP non persistenteSupponiamo che l’utente digiti l’indirizzo www.nomedip.nomeuni.it/index.html e che il file contenga 10 immagini.

2. Il server HTTP, in attesa di connessioni TCP sulla porta 80, “accetta” la connessione e manda una notifica al client

1. Il client HTTP inizia una connessione TCP sulla porta 80 del server (il processo server) all’indirizzo www.nomedip.nomeuni.it

Page 22: Il protocollo http

2222

HTTP non persistenteHTTP non persistente

4. Il server HTTP riceve la richiesta, forma un messaggio di risposta (response message) che contiene l’oggetto richiesto e lo inoltra al client

3. Il client HTTP manda una richiesta HTTP (request message) che contiene una URL

Il messaggio indica che il client richiede la pagina index.html

Page 23: Il protocollo http

2323

HTTP non persistenteHTTP non persistente

6. Il client HTTP riceve il messaggio di risposta che contiene il file index.html. Comincia a visualizzarlo e durante la parsificazione si accorge che ci sono 10 riferimenti ad oggetti JPEG

5. Il server HTTP chiede la chiusura della connessione TCP

I passi 1-6 vengono ripetuti per ogni oggetto JPEG.

Page 24: Il protocollo http

2424

HTTP non persistenteHTTP non persistente

Page 25: Il protocollo http

2525

HTTP non persistenteHTTP non persistente Richiede due RTT per trasferire ogni oggetto Richiede due RTT per trasferire ogni oggetto

(più il tempo per il trasferimento effettivo del file).(più il tempo per il trasferimento effettivo del file).

Il S.O. deve allocare le risorse per ogni Il S.O. deve allocare le risorse per ogni connessione TCP.connessione TCP.

I browser spesso possono aprire più I browser spesso possono aprire più connessioni TCP in parallelo per caricare gli connessioni TCP in parallelo per caricare gli oggetti inclusi in un file html.oggetti inclusi in un file html.

Page 26: Il protocollo http

2626

HTTP persistenteHTTP persistente Il server non chiude la connessione TCP dopo Il server non chiude la connessione TCP dopo

aver inviato una risposta.aver inviato una risposta. I messaggi HTTP successivi (tra lo stesso I messaggi HTTP successivi (tra lo stesso

client e lo stesso server) vengono inoltrati client e lo stesso server) vengono inoltrati sulla connessione aperta.sulla connessione aperta.

Il tempo di trasmissione diminuisce.Il tempo di trasmissione diminuisce.

Page 27: Il protocollo http

2727

HTTP persistenteHTTP persistente Senza pipeliningSenza pipelining

• Il client invia una nuova richiesta solo quando ha ricevuto la Il client invia una nuova richiesta solo quando ha ricevuto la risposta precedente.risposta precedente.

• Tempo richiesto: un RTT per ogni oggetto.Tempo richiesto: un RTT per ogni oggetto. Con pipeliningCon pipelining

• Default nella versione HTTP/1.1.Default nella versione HTTP/1.1.• Il client invia una nuova richiesta non appena incontra un Il client invia una nuova richiesta non appena incontra un

riferimento ad un oggetto durante la parsificazione di un file riferimento ad un oggetto durante la parsificazione di un file html.html.

Page 28: Il protocollo http

2828

HTTP persistenteHTTP persistente

Page 29: Il protocollo http

2929

HTTP request: formatoHTTP request: formato

Page 30: Il protocollo http

3030

HTTP request: formatoHTTP request: formato

Page 31: Il protocollo http

3131

MetodiMetodi

HTTP 1.0

• GET• POST• HEAD

Restituisce solo l’header.

HTTP 1.1

• GET, POST, HEAD• PUT

File upload sul server.

• DELETE Per cancellare i file sul server.

Page 32: Il protocollo http

3232

HTTP response: formatoHTTP response: formato

Page 33: Il protocollo http

3333

Struttura di una transazione HTTPStruttura di una transazione HTTP

Le transazioni HTTP non necessariamente usano tutti gli headers.Le transazioni HTTP non necessariamente usano tutti gli headers.• Es.: la richiesta GET / HTTP/1.0 (senza headers aggiuntivi) può essere Es.: la richiesta GET / HTTP/1.0 (senza headers aggiuntivi) può essere

sufficiente.sufficiente.GET / HTTP/1.1

Connection: Keep-AliveReferer: http://www.dsi.unifi.it/~ferrari/pippo.htmlUser-Agent:Mozilla/3.0Gold (WinNT)Host: www.dsi.unifi.itAccept: image/gif image/x-xbitmap, image.jpegContent-type: application/x-www-form-urlencodedContent-length: 23

In questo caso vuoto

Page 34: Il protocollo http

3434

Struttura di una transazione HTTPStruttura di una transazione HTTP Componenti delle requestsComponenti delle requests

• La prima linea denota quale metodo il client vuole usare, su quale La prima linea denota quale metodo il client vuole usare, su quale documento si vuole applicare il metodo e la versione HTTP.documento si vuole applicare il metodo e la versione HTTP.

HTTP/1.1 definisce i metodi GET, POST, HEAD, PUT, LINK, UNLINK, DELETE, HTTP/1.1 definisce i metodi GET, POST, HEAD, PUT, LINK, UNLINK, DELETE, OPTIONS, TRACE.OPTIONS, TRACE.

• La URL specifica la locazione del documento. Ogni server può utilizzare La URL specifica la locazione del documento. Ogni server può utilizzare meccanismi diversi per tradurre la URL in una forma di indirizzamento per la meccanismi diversi per tradurre la URL in una forma di indirizzamento per la risorsa richiesta. A volte la URL indica un programma che genera risorsa richiesta. A volte la URL indica un programma che genera dinamicamente il contenuto da inviare al client (pagine dinamiche).dinamicamente il contenuto da inviare al client (pagine dinamiche).

I General-header sono header opzionali utilizzati sia nelle client I General-header sono header opzionali utilizzati sia nelle client request che nelle server response. Indicano informazioni sulla request che nelle server response. Indicano informazioni sulla connessione oppure current-time.connessione oppure current-time.

Page 35: Il protocollo http

3535

Struttura di una transazione HTTPStruttura di una transazione HTTP Request headers sono headers che inviano al server Request headers sono headers che inviano al server

informazioni sul client.informazioni sul client.• Possono identificare l’agente utilizzato.Possono identificare l’agente utilizzato.• Specificano i formati accettati.Specificano i formati accettati.

Entity headers vengono utilizzati quando un documento viene Entity headers vengono utilizzati quando un documento viene spedito e specificano informazioni sul documento.spedito e specificano informazioni sul documento.• Encoding scheme.Encoding scheme.• Lunghezza.Lunghezza.• Tipo.Tipo.

Page 36: Il protocollo http

3636

Struttura di una transazione HTTPStruttura di una transazione HTTP

HTTP/1.0 200 OK

Date: …

Server: Apache/1.1.1

Content-type: text/htmlContent-length: 327Last-modified …

<title> … </title>… .

Page 37: Il protocollo http

3737

Metodi del client - GETMetodi del client - GET Possiamo considerare i metodi come delle dichiarazioni delle intenzioni Possiamo considerare i metodi come delle dichiarazioni delle intenzioni

del client.del client. Il metodo GET serve ad inviare al server una richiesta per ottenere una Il metodo GET serve ad inviare al server una richiesta per ottenere una

risorsa (file oppure richiamare l’esecuzione di un programma che produce risorsa (file oppure richiamare l’esecuzione di un programma che produce un output per il client).un output per il client).

Il server risponde ad una GET con una status line, degli headers ed Il server risponde ad una GET con una status line, degli headers ed (eventualmente) i dati richiesti dal client.(eventualmente) i dati richiesti dal client.

Page 38: Il protocollo http

3838

Metodi del client - HEADMetodi del client - HEAD Il metodo HEAD si comporta in modo simile al metodo GET, con la Il metodo HEAD si comporta in modo simile al metodo GET, con la

differenza che il server in questo caso non invia il body.differenza che il server in questo caso non invia il body. Questo metodo viene spesso utilizzato dal client per verificare Questo metodo viene spesso utilizzato dal client per verificare

l’esistenza di un documento oppure per conoscere Content-length o l’esistenza di un documento oppure per conoscere Content-length o Content-type.Content-type.

UtilizziUtilizzi• Tempo dell’ultima modifica per utilizzo del caching.Tempo dell’ultima modifica per utilizzo del caching.• Lunghezza del documento per stimare tempi di arrivo, oppure per scegliere Lunghezza del documento per stimare tempi di arrivo, oppure per scegliere

documenti di dimensioni inferiori.documenti di dimensioni inferiori.• Content-type per permettere al client di esaminare solo certi tipi di Content-type per permettere al client di esaminare solo certi tipi di

documenti.documenti.• Informazioni sul tipo di server per effettuare certi tipi di queries.Informazioni sul tipo di server per effettuare certi tipi di queries.

Alcuni headers sono opzionali e quindi alcuni server non li forniscono.Alcuni headers sono opzionali e quindi alcuni server non li forniscono.

Page 39: Il protocollo http

3939

POST (dati inviati al server)POST (dati inviati al server) Il metodo POST permette al client di specificare dati da inviare ad un Il metodo POST permette al client di specificare dati da inviare ad un

qualche programma a cui il server può accedere.qualche programma a cui il server può accedere. Esempi di utilizzoEsempi di utilizzo

• Programmi CGI.Programmi CGI.• Gateways verso servizi di rete, server NTTP (per le news).Gateways verso servizi di rete, server NTTP (per le news).• Interfaccia per inviare dati a qualche programma.Interfaccia per inviare dati a qualche programma.• Operazioni su basi di dati.Operazioni su basi di dati.

In una POST request i dati vengono inseriti nella entity-body.In una POST request i dati vengono inseriti nella entity-body. Dopo che il server ha esaminato gli headers può passare la entity-Dopo che il server ha esaminato gli headers può passare la entity-

body ad un altro programma (specificato nella URL).body ad un altro programma (specificato nella URL). Una POST request ha un header Content-type che descrive il formato Una POST request ha un header Content-type che descrive il formato

della entity-body.della entity-body.

Page 40: Il protocollo http

4040

HTTP response: status codeHTTP response: status code 200 OK200 OK 301 Moved permanently301 Moved permanently 400 Bad Request400 Bad Request 404 Not Found404 Not Found 505 HTTP Version Not Supported505 HTTP Version Not Supported ……

Page 41: Il protocollo http

4141

HTTP response ???HTTP response ???telnet www.educ.di.unito.it 80telnet www.educ.di.unito.it 80GET / HTTP/1.1GET / HTTP/1.1Host: www.educ.unito.itHost: www.educ.unito.it

Dopo aver digitato due volte il tasto Enter (Invio) si apre una connessione TCP alla porta 80 del serverwww.educ.di.unito.it

Poi viene inviato il comando GET e il server risponde…

Page 42: Il protocollo http

4242

HTTP response !!!HTTP response !!!

Page 43: Il protocollo http

4343

HTTP: un esempio (cont)HTTP: un esempio (cont) Comando HTTP Comando HTTP GET /GET /

• Il server restituisce tutto il documento (la Il server restituisce tutto il documento (la home pagehome page).).• La linea finale dell’output del client telnet indica che il server ha chiuso la connessione La linea finale dell’output del client telnet indica che il server ha chiuso la connessione

TCP dopo aver scritto l’ultima linea dell’output.TCP dopo aver scritto l’ultima linea dell’output. Un documento HTML inizia con Un documento HTML inizia con <HTML> <HTML> e termina con e termina con </HTML> </HTML> (molti (molti

comandi HTML sono appaiati secondo questo schema).comandi HTML sono appaiati secondo questo schema).• il documento contiene una head e un body.il documento contiene una head e un body.

Head delimitata da Head delimitata da <HEAD> <HEAD> e e </HEAD>.</HEAD>. Body delimitato da Body delimitato da <BODY> <BODY> e e </BODY>.</BODY>.

La lineaLa linea<CENTER><IMG ALIGN=center SRC= “/icons/uni_logo2.gif” ><CENTER><IMG ALIGN=center SRC= “/icons/uni_logo2.gif” >

specifica un’immagine.specifica un’immagine.

Page 44: Il protocollo http

4444

HTTP: un esempio (cont)HTTP: un esempio (cont) Quando il server invia questa home page non viene inviato il file Quando il server invia questa home page non viene inviato il file

immagine (HTTP 1.0). Viene inviato solo il nome del file, il client deve immagine (HTTP 1.0). Viene inviato solo il nome del file, il client deve aprire un’altra connessione TCP verso il server per prelevare questo aprire un’altra connessione TCP verso il server per prelevare questo file.file.

La lineaLa linea<A HREF=http://www.di.unito.it/concorsi/tecnici.html”> <A HREF=http://www.di.unito.it/concorsi/tecnici.html”>

N.2 N.2 CONTRATTI… </A>CONTRATTI… </A>

IMG ALIGN=center SRC= “/icons/uni_logo2.gif” >IMG ALIGN=center SRC= “/icons/uni_logo2.gif” >

specifica un hypertext link.specifica un hypertext link.

http://www.di.unito.it/concorsi/tecnici.htmlhttp://www.di.unito.it/concorsi/tecnici.html

Page 45: Il protocollo http

4545

Accesso con autorizzazioneAccesso con autorizzazione

Spesso quando ci si collega ad un sito web Spesso quando ci si collega ad un sito web vengono richieste login e password.vengono richieste login e password.

Questo accesso si ottiene mediante Questo accesso si ottiene mediante speciali speciali header HTTPheader HTTP..

Page 46: Il protocollo http

4646

Accesso con autorizzazioneAccesso con autorizzazione

Page 47: Il protocollo http

4747

Accesso con autorizzazioneAccesso con autorizzazione

Dopo aver ricevuto il primo oggetto il client continua a mandare login e password al server. Questi valori sono nella cache del browser e quindi non viene richiesta ogni volta l’autenticazione.

Page 48: Il protocollo http

4848

Conditional GETConditional GET Il browser salva gli Il browser salva gli oggetti oggetti che visualizza nella sua che visualizza nella sua

memoria cachememoria cache.. Quando un utente richiede un oggetto che è già Quando un utente richiede un oggetto che è già

nella cache, questo viene visualizzato in modo nella cache, questo viene visualizzato in modo immediato (es. pulsante Back).immediato (es. pulsante Back).

ProblemaProblema:: cosa succede se la copia originale sul cosa succede se la copia originale sul server è stata modificata?server è stata modificata?

Page 49: Il protocollo http

4949

Conditional GETConditional GET Il client, ogni volta che memorizza un oggetto nella cache, tiene Il client, ogni volta che memorizza un oggetto nella cache, tiene

traccia anche della data dell’ultima modifica.traccia anche della data dell’ultima modifica.Last-Modified: <data>Last-Modified: <data>

Ad ogni richiesta successiva il client può specificare la data della copia Ad ogni richiesta successiva il client può specificare la data della copia in cache nella richiesta HTTP.in cache nella richiesta HTTP.

GET /dir/nomefile.gif HTTP/1.1GET /dir/nomefile.gif HTTP/1.1Host: www.somehost.itHost: www.somehost.itIf-modified-since: <data>If-modified-since: <data>

Page 50: Il protocollo http

5050

Conditional GETConditional GET Il server invia l’oggetto richiesto solo se è diverso da quello che Il server invia l’oggetto richiesto solo se è diverso da quello che

è già memorizzato nella cache del browser.è già memorizzato nella cache del browser.

Altrimenti restituisceAltrimenti restituisce

HTTP/1.1 304 Not ModifiedHTTP/1.1 304 Not ModifiedDate: Tue, 08 Apr 2003 08:38:48 GMTDate: Tue, 08 Apr 2003 08:38:48 GMTServer: Apache/1.3.26 …Server: Apache/1.3.26 …

Page 51: Il protocollo http

5151

Conditional GETConditional GET

Page 52: Il protocollo http

5252

CookiesCookies I Cookies consentono ai web server di memorizzare delle informazioni in un browser. I Cookies consentono ai web server di memorizzare delle informazioni in un browser.

Questo meccanismo viene spesso usato per memorizzare variabili di sessione, user Questo meccanismo viene spesso usato per memorizzare variabili di sessione, user preferences o user identity.preferences o user identity.

Sebbene i Cookies non facciano parte della specifica di HTTP essi diventano indispensabili Sebbene i Cookies non facciano parte della specifica di HTTP essi diventano indispensabili per ottenere un’interazione ottimale con alcuni siti web.per ottenere un’interazione ottimale con alcuni siti web.

Quando un server vuole che il client memorizzi delle informazioni, il server invia uno Quando un server vuole che il client memorizzi delle informazioni, il server invia uno header Set-Cookie nella risposta al client. Questo header contiene il valore da header Set-Cookie nella risposta al client. Questo header contiene il valore da memorizzare.memorizzare.

Il client memorizza le informazioni contenute in Set-Cookie associate con la URL oppure il Il client memorizza le informazioni contenute in Set-Cookie associate con la URL oppure il dominio specificato.dominio specificato.

In una richiesta successiva per tale URL il client deve includere le informazioni del cookie In una richiesta successiva per tale URL il client deve includere le informazioni del cookie usando lo header Cookie. Il server (o il programma CGI) usa queste informazioni per usando lo header Cookie. Il server (o il programma CGI) usa queste informazioni per inviare un documento adatto al client specifico.inviare un documento adatto al client specifico.

Il server può includere expiration date per il cookie oppure utilizzarlo per una sola sessione Il server può includere expiration date per il cookie oppure utilizzarlo per una sola sessione del browser.del browser.

Page 53: Il protocollo http

5353

Cookies (cont.)Cookies (cont.) Esempio di un client che richiede l’apertura di un accountEsempio di un client che richiede l’apertura di un account

POST /sales.ora.com/order.pl HTTP/1.0POST /sales.ora.com/order.pl HTTP/1.0[client headers…][client headers…]type=new&firstname=John&lastname=Smithtype=new&firstname=John&lastname=Smith

Il server memorizza queste informazioni associandole ad un nuovo account ID ed invia al client la rispostaIl server memorizza queste informazioni associandole ad un nuovo account ID ed invia al client la rispostaHTTP/1.0 200 OKHTTP/1.0 200 OK[server headers…][server headers…]Set-Cookie: acct=04382374;domain=.ora.com;Expires=Sun, 16-Feb-2003 04:38:14 GMT; Set-Cookie: acct=04382374;domain=.ora.com;Expires=Sun, 16-Feb-2003 04:38:14 GMT;

Path=/Path=/ La prossima volta che il browser visita il sito, il client dovrebbe riconoscere che è necessario un cookie ed La prossima volta che il browser visita il sito, il client dovrebbe riconoscere che è necessario un cookie ed

inviareinviareGET /order.pl HTTP/1.0GET /order.pl HTTP/1.0[client headers…][client headers…]Cookie: acct=04382374Cookie: acct=04382374

Page 54: Il protocollo http

5454

Cookie: name=valueCookie: name=value Permette di specificare coppie nome/valore per una certa URL.Permette di specificare coppie nome/valore per una certa URL.

• Cookie: acct=03847732Cookie: acct=03847732 Cookie multipli possono essere specificati separandoli con ;.Cookie multipli possono essere specificati separandoli con ;. I proxy server devono propagare header come Set-Cookie e I proxy server devono propagare header come Set-Cookie e

Cookie anche se la pagina è in cache (Set-Cookie non dovrebbe Cookie anche se la pagina è in cache (Set-Cookie non dovrebbe essere mai memorizzato nella cache dei proxy).essere mai memorizzato nella cache dei proxy).

Page 55: Il protocollo http

5555

Set-Cookie: name=value optionsSet-Cookie: name=value options

Contiene una coppia di informazioni nome/valore Contiene una coppia di informazioni nome/valore associate alla URL. Serve ai browser per supportare associate alla URL. Serve ai browser per supportare i cookie.i cookie.• Set-Cookie: acct=03845324Set-Cookie: acct=03845324