Telematica II 9. Protocollo HTTP

Documenti analoghi
WEB: Architettura Client Server

Il protocollo HTTP. Caratteristiche del protocollo HTTP. Versioni del protocollo. Due tipologie di messaggi:

Il protocollo HTTP. Corso di Applicazioni Telematiche. A.A Lezione n.2 Prof. Roberto Canonico

Corso di Laurea Specialistica in Ingegneria Informatica Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni

Corso di Applicazioni Telematiche

Tito Flagella - Il protocollo HTTP

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

Il protocollo HTTP. Corso di Applicazioni Telematiche. A.A Lezione n.2 Prof. Roberto Canonico

Parte II: Reti di calcolatori Lezione 7 (31)

Introduzione ad HTTP WWW. Fabio Vitali

Reti di Calcolatori I. Prof. Roberto Canonico Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Ipertesto (testo + link a risorse)

Tecnologie e applicazioni web Autenticazione

IL LIVELLO APPLICAZIONI WEB e HTTP

SMTP. Introduzione. Scambio di messaggi asincrono

Reti di Calcolatori. IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP

WWW = URL + HTTP + HTML

Introduzione a Internet e World Wide Web

Metodologie Informatiche Applicate al Turismo

Parte II: Reti di calcolatori Lezione 6 (30)

Introduzione ad HTTP WWW. Fabio Vitali

Introduzione. Java HTTP. G. Prencipe

Il World Wide Web. Marco Porta - CIM: Web Design & Technologies

Programmazione in Rete

Sicurezza delle applicazioni web: protocollo HTTP

Programmazione Web D B M G. Il linguaggio HTML

Applicazioni e protocolli a livello applicazione

Stack protocolli TCP/IP

Parte II: Reti di calcolatori Lezione 6 (30)

D B M G Il linguaggio HTML

Il Web come Interfaccia Utente di un Sistema Informativo

Il Protocollo HTTP e la programmazione di estensioni Web

Livello applicazione. Fondamenti di Informatica

2Dove vogliamo arrivare:

@2011 Politecnico di Torino 1

Università degli Studi di Bergamo

Livello di applicazione: Web e HTTP

Protocolli di strato applicazione

Architettura dell Informazione

Protocolli strato applicazione in Internet

Laboratorio di Basi di Dati

Tecnologie Web T Il protocollo HTTP

WWW = URL + HTTP + HTML

La connessione ai database MySQL tramite script PHP versione 5.5

Applicazioni di rete 1

Appunti di Sistemi A cura del prof. ing. Mario Catalano. Internet e il Web

World Wide Web. WWW e Tim Berners Lee

Schemi di Autenticazione per il Protocollo HTTP. a cura di Nicola Ferrante

Programmazione Web D B M G. Il linguaggio HTML

Web e HTTP. path name. host name Realizzato da Roberto Savino.

Introduzione alle Architetture di Rete

L'HyperText Transfer Protocol (HTTP)

World Wide Web (WWW o Web)

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

INFORMATICA GENERALE - MODULO 2 CdS in Scienze della Comunicazione. CRISTINA GENA

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

Simple Social: implementazione di una

@2011 Politecnico di Torino 1

Architetture Applicative Il Web

Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

Il protocollo HTTP e HTTPS

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont)

Modulo o Form in Html

PROGETTO TESSERA SANITARIA WEB SERVICES DI GESTIONE PASSWORD

@2011 Politecnico di Torino 1

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Uso di Internet: Esempio. Prof. Franco Callegati

Tecnologie e applicazioni web JSON Web Token (JWT)

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

Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP

INFORMATICA GENERALE - MODULO 2 CdS in Scienze della Comunicazione. CRISTINA GENA

Protocolli HTTP ed FTP

Riccardo Lancellotti, Web Server Apache

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

Uso di Internet: introduzione. Prof. Franco Callegati

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

Informatica. Alfredo Cuzzocrea. Reti di Calcolatori

OSOR. Applicazioni di Rete

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

Lo strato di applicazione in Internet

Progettazione Siti Web: Web

HTML Interazione con l utente

Lezione 6. Siti, Utenti e Sessioni

Protocollo HTTP. Alessandro Sorato

Mantenimento dello stato

Real Time Streaming Protocol. Akshat Sikarwar - Columbia University Traduzione e adattamento di Massimo De Santo, Università di Salerno

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Ordinativo Informatico Gateway su Web Services

Web caching. Corso di Applicazioni Telematiche. A.A Lezione n.3 - parte I Prof. Roberto Canonico

Livello Applicativo. Application Layer. Parte 1 Principi generali. Cosa vediamo. Parte 1 Principi generali. Parte 2 Il Web e il protocollo HTTP

Transcript:

Esempio di HTTP Request message formato messaggio ASCII leggibile Telematica II 9. Protocollo HTTP request line (comandi GET, POST, HEAD ) header lines GET /mydir/page.html HTTP/1.1 Host: www.newsite.it User-agent: Mozilla/4.0 Connection: close Accept-language:it Carriage return, (extra carriage return, line feed) line feed indicano la fine Corso di Laurea in Ingegneria Informatica del messaggio A.A. 2009-2010 2 Semestre Prof. Giovanni Pascoschi 2 Formato HTTP Request Header della HTTP request #1 La richiesta semplice è stata introdotta nella versione 0.9 (la prima versione di HTTP) ed è ancora obbligatoria l implementazione La presenza o meno di Version nella linea di richiesta fanno capire al server se si può direttamente creare la risposta o se è necessario attendere altri dati Version è HTTP/1.0 o HTTP/1.1 Method può essere: GET (fin da HTTP 0.9) HEAD, PUT, POST, LINK, UNLINK, DELETE (da HTTP 1.0) OPTIONS, TRACE (da HTTP 1.1) URL è un identificativo di risorsa locale al server Header sono linee nel formato header_name: valuecrlf classificabili come header generali, header di entità, header di richiesta e header di risposta Body è un messaggio MIME (RFC 2045, RFC 2046, RFC 2047) Gli header della richiesta sono introdotti dal client per specificare informazioni sulla richiesta e su se stesso al server. Ecco di seguito alcuni esempi (parole chiavi): User-Agent: è una stringa che descrive il client che origina la richiesta; tipicamente contiene tipo, versione e sistema operativo del client (p.e. Mozilla/4.0) Referer: è l URL della pagina mostrata all utente mentre richiede il nuovo URL in pratica è l URL origine tramite la quale un utente è venuto a conoscenza di una pagina e utile per consentire al server di tracciare la navigazione del client. Se l URL è richiesto con altri metodi che non implicano l attraversamento di un link, Referer deve essere assente Host: obbligatoria. Indica il nome di dominio e la porta a cui viene fatta la connessione. Permette l implementazione di virtual hosting senza manipolazioni del routing e multiaddressing IP permette di realizzare più siti/pagine web sulla stessa macchina server (p.e. www.newsite.it) 3 4

Header della HTTP request #2 Header della HTTP request #3 Entity Body (MIME) From: indirizzo di e-mail del richiedente. Si richiede che l utente dia la sua approvazione prima di inserire questo header nella richiesta Range: il range della richiesta p.e. un intervallo di byte Accept-Language: implementazione della negoziazione del formato, per quel che riguarda tipo MIME, codice caratteri, codifica MIME, linguaggio umano. Il client specifica cosa è in grado di accettare, e il server propone il match migliore p.e. Accept-language:it MIME (Multipurpose Internet Mail Extension) è un sistema di comunicazione per permettere la spedizione tramite e-mail (e, per estensione, sulla rete) di dati binari codificati, in modo che a ciascun flusso di dati venga associata una intestazione che specifica sostanzialmente il tipo di oggetto codificato (immagine, testo, programma) e il formato con cui è stato memorizzato. Questo perchè i sistemi basati su SMTP trasportano correttamente al più i primi 128 caratteri del codice ASCII (caratteri alfanumerici), mentre all'interno di un file binario possono essere contenuti tutti e 256 i caratteri possibili; quindi è necessario prevedere un sistema di codifica If-Modified-Since, If-Match, If-None-Match, If-Range, If- Unmodified-Since: richieste condizionali (p.e. per aggiornare una cache) che vanno portate a termine solo se la condizione è vera p.e. If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT Authorization, Proxy-Authorization: una stringa di autorizzazione per l accesso alla risorsa (p.e. login/pwd) ved. in seguito Molti tipi di trasmissioni di dati, tra cui HTTP prevedono che il contenuto vero e proprio sia preceduto, all'interno delle righe di intestazione (header), da una indicazione del tipo Content-type: oggetto/formato dove al posto di oggetto vi è una parola chiave che specifica il tipo di oggetto (es. text, image...) e al posto di formato vi è una parola chiave che specifica il formato (ad esempio, se l'oggetto è un testo, plain, html...). Ogni coppia oggetto/formato costituisce un tipo MIME (MIME type o content-type); p.e. Content-Type: text/plain 5 6 Header della HTTP request #4 Entity Body (MIME) RFC Request for Comment #1 Generalmente si entra in contatto con i tipi MIME con alcuni client di e- mail per specificare il tipo di codifica da adottare quando si inviano file binari. L'indicazione standardizzata: Content- Transfer-Encoding: indica la codifica da adoperare per la spedizione dell'oggetto una RFC (Request for Comment) è un documento che riporta informazioni o specifiche riguardanti nuove ricerche, innovazioni e metodologie dell'ambito informatico (p.e. Internet) MIME prevede alcune codifiche standard, tra cui le più usate sono 7 bit, quoted-printable e base64 gli ingegneri o gli esperti informatici possono pubblicare dei memorandum (RFC), per esporre nuove idee o semplicemente delle informazioni che una volta vagliati dall IETF (Internet Engineering Task Force una comunità aperta) possono diventare degli standard Internet. I programmi di posta elettronica o di lettura dei newsgroup che utilizzano il sistema MIME devono inserire nell intestazione la riga: MIME-Version: 1.0 (1.0 è l'unica versione di MIME esistente) 7 8

RFC Request for Comment #2 Metodi principali La lista di tutte le RFC sono consultabili tramite il sito della IETF http://www.ietf.org/rfc.html oppure http://www.networksorcery.com/enp/default1002.htm Una lista di alcune RFC tradotte in italiano la si puo trovare sul sito http://www.rfc.altervista.org/ GET: richiede al server la risorsa specificata dall URL HEAD: simile a GET ma il server restituisce solo l header POST: serve per inviare i dati contenuti nel body al server. Bisogna specificare il tipo e la lunghezza dei dati tramite gli header Content- Type e Content-Length PUT/DELETE: consentono di uplodare/rimuovere oggetti dal Web server Esempio RFC x Protocollo HTTP 1.0 RFC1945 Protocollo HTTP 1.1 RFC2616 9 10 Richiami script CGI Interazione client-server (1) Common Gateway Interface (CGI): tecnologia standard usata dai web server per interfacciarsi con applicazioni esterne per far interagire il client con il server e necessario usare programmi residenti su server (p.e. script CGI - Common Gateway Interface) sul lato client occorre usare una form HTML Ogni volta che un client richiede al web-server un URL corrispondente ad un documento in puro HTML gli viene restituito un documento statico (come un file di testo); se l'url corrisponde invece ad un programma CGI (realizzato in qualsiasi linguaggio C/C++, Perl, ecc), il server lo esegue in tempo reale, generando dinamicamente informazioni sul lato server è necessario disporre di un CGI residente occorre installare sul proprio server un web server (p.e. APACHE) 11 12

Interazione client-server (2) Componenti di una Form per far interagire il client con il server occorre seguire due fasi: impostazione dei tag necessari per la creazione del form, dei suoi campi e del tasto di invio; creazione di uno script CGI su server (o richiamo di uno script già impostato). i form vengono utilizzati per ottenere risposte dagli utenti attraverso l'uso di una interfaccia grafica che consiste in caselle di testo, pulsanti, caselle di controllo e altri elementi come illustrato nella prossima slide Componenti di input Componenti di invio 13 14 Form - method Form - method l attributo method specifica la modalità di gestione dei dati raccolti dal programma gateway. Sono possibili due valori: get post il valore get va usato nei form che non effettuano cambiamenti di stato nell ipertesto, ma per esempio si limitano a eseguire una ricerca in un database i form che utilizzano il valore get vengono gestiti facendo seguire l URL da un punto interrogativo?, seguito a sua volta dai dati dell applicazione nella forma, facendo comparire in chiaro i dati trasmessi, p.e.: http://www.sito.it/cgi-bin/querystring.cgi?name=mario&eta=24 Il valore post va usato nei form che effettuano cambiamenti nell ipertesto o in un database Se method è impostato a post, i dati vengono ricevuti direttamente dallo script CGI senza un preventivo processo di decodifica (tramite l Entity Body). In tal modo lo script può leggere una quantità illimitata di caratteri (e non vengono inviati in chiaro sull url adatto per inviare password) Questi ultimi sono gestiti da variabili che vengono specificate da un insieme di campi e nomi di variabili accoppiati. Il nome della variabile viene fornito nel corpo del form Se method è impostato a get i dati vengono spediti al server e separati in due variabili. Per questo metodo il numero massimo di caratteri contenuti nel form è 255 15 16

Metodo GET Metodo HEAD Il più importante (ed unico in v. 0.9) metodo di HTTP è GET Usato per richiedere una risorsa URI ad un server Questo è il metodo più frequente, ed è quello che viene attivato facendo click su un link ipertestuale di un documento HTML, o specificando un URL nell apposito campo di un browser GET può essere: assoluto la risorsa viene richiesta senza altre specificazioni condizionale si richiede la risorsa se è soddisfatto un criterio indicato negli header If-match, If-modified-since, If-range, ecc. parziale si richiede una sottoparte di una risorsa memorizzata Simile al metodo GET, ma il server deve rispondere soltanto con gli header relativi, senza il body Usato per verificare 1) la validita di un URI la risorsa esiste e non è di lunghezza zero 2) l accessibilità di un URI la risorsa è accessibile presso il server, e non sono richieste procedure di autenticazione del documento 3) la coerenza di cache di un URI la risorsa non è stata modificata nel frattempo, non ha cambiato lunghezza, valore hash o data di modifica 17 18 Metodo POST Metodo PUT Il metodo POST serve tipicamente per trasmettere delle informazioni dal client al server, ma senza la creazione di una nuova risorsa Il metodo PUT serve per trasmettere delle informazioni dal client al server, creando o sostituendo la risorsa specificata Esempio: upload di un file POST viene usato per esempio per sottomettere i dati di una form HTML ad un applicazione sul server In generale, l argomento del metodo PUT è la risorsa che ci si aspetta di ottenere facendo un GET in seguito con lo stesso nome I dati vengono trasmessi nel Body della richiesta 19 20

Form get/post Formato della risposta HTTP Metodo get Metodo post Indicato per piccole quantità di dati (max 255 char) Indicato per grandi quantità di dati Solo parametri testuali Dati in qualsiasi formato (testi, immagini, video) In risposta ad una form e anche in richiamo da un URL con parametri in chiaro all interno di una pagina HTML Solo in risposta ad una form 21 22 HTTP Response Esempio di HTTP Response La risposta HTTP è un messaggio testuale formato da una riga iniziale, da header facoltativi ed eventualmente un body (corpo) Version status-code reason-phrase CRLF [Header] CRLF Body Esempio: HTTP/1.1 200 OK Date: Thu, 10 Apr 2003 11:46:53 GMT Server: Apache/1.3.26 (Unix) PHP/4.0.3pl1 Last-Modified: Wed, 18 Dec 2002 12:55:37 GMT Accept-Ranges: bytes Content-Length: 7394 Content-Type: text/html <HTML> </HTML> 23 24

Status code Esempi di status code Lo 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, compreso e accettato la richiesta 3xx: Redirection. Il server ha ricevuto e compreso la richiesta, ma sono necessarie altre azioni da parte del client per portare a termine la richiesta 4xx: Client error. La richiesta del client non può essere soddisfatta per un errore da parte del client (errore sintattico o richiesta non autorizzata) 100 Continue (se il client non ha ancora mandato il body) 200 Ok (GET con successo) 201 Created (PUT con successo) 301 Moved permanently (URL non valida, il server conosce la nuova pos.) 400 Bad request (errore sintattico nella richiesta) 401 Unauthorized (manca l autorizzazione) 403 Forbidden (richiesta non autorizzabile) 404 Not found (URL errato) 500 Internal server error (tipicamente un CGI contenente errori) 501 Not implemented (metodo non conosciuto dal server) 5xx: Server error. La richiesta può anche essere corretta, ma il server non è in grado di soddisfare la richiesta per un problema interno (suo o p.e. di applicazioni CGI) 25 26 Header della risposta Gestione delle sessioni Server. Indica il tipo la marca, la versione del server. Equivalente dal lato server dell'header di richiesta User-Agent serve p.e. per conoscere che tipologia di webserver è presente Content-Type. Indica il tipo di contenuto restituito. La codifica di tali tipi (detti Media type) è registrata presso IANA (Internet Assigned Number Authority ). Si tratta di tipi MIME WWW-Authenticate: l header WWW-Authenticate include un challenge (codice di partenza) con cui il meccanismo di autenticazione deve matchare in caso di una risposta 401 (unauthorized). Il client genererà mediante challenge un valore di autorizzazione posto nell header Authorization della prossima richiesta HTTP è STATELESS Non ha memoria della precedente richiesta Per alcuni tipi di siti è necessaria l autenticazione dell utente (login) per poter accedere a delle pagine. Dopo questa fase l utente può continuare a navigare in quella sezione, finché non effettua il logout Si definisce sessione l intervallo di tempo in cui l utente è autenticato Dato che l HTTP è stateless, si deve ricorrere ad alcune tecnologie per tener traccia della sessione ad esempio i cookies 27 28

Cookies #1 Cookies #3 Un cookie è una breve informazione scambiata tra il server ed il client Si tratta di un piccolo file di testo locale esterno rispetto al paradigma di HTTP E un estensione dell HTTP proposta da Netscape e contenuta nella RFC 2109 Tramite un cookie il client mantiene lo stato di precedenti connessioni, e lo manda al server di pertinenza ogni volta che richiede un documento genera cookie analizza cookie Esempio: tramite un cookie si viene rediretti sulla pagina in Italiano tutte le volte che ci si ricollega allo stesso server...altre request + cookie 29 30 Cookies #2 Cookies #4 I cookies usano due header, uno per la risposta, ed uno per le richieste successive: Set-Cookie: header della risposta (HTTP response) da parte di un server, il client può memorizzarlo in un file testuale e rispedirlo alla prossima richiesta Cookie: header della richiesta (HTTP request). Il client decide se spedirlo sulla base del nome del documento, dell indirizzo IP del server e dell età del cookie I cookies contengono le seguenti informazioni: Comment: stringa leggibile di descrizione del cookie (provenienza) Domain: il dominio per cui il cookie è valido Max-Age: La durata in secondi del cookie Path: l URI (risorsa) per il quale il cookie è valido Secure: si richiede che il client contatti il server usando soltanto un meccanismo sicuro (es. HTTPs) per inviare dati Version: La versione della specifica a cui il cookie aderisce Un browser può essere configurato per accettare o rifiutare i cookies Alcuni siti web richiedono necessariamente la capacità del browser di accettare i cookies 31 32

Autenticazione Basic Authentication #1 una parte delle risorse sul server può essere ad accesso limitato al GET viene fornita la risposta 401 (unauthorized), più un header WWW- Authenticate che specifica i criteri con cui autenticarsi (metodo e parametri da usare) esistono due tipi di autenticazione: Basic Authentication (HTTP 1.0) Digest Access Autentication (HTTP 1.1) Introdotta da HTTP 1.0. L'header della prima risposta WWW-Authenticate contiene il realm (dominio con login+pwd) dell'autenticazione (dopo una risposta di tipo 401) Il client richiede le informazioni di autorizzazione all'utente Il client crea una nuova richiesta GET e fornisce le informazioni di autorizzazione (credenziali) codificate in Base64 Il browser continua a mandare lo stesso header per tutte le pagine dello stesso realm 33 34 Basic Authentication #2 Digest Access Authentication 35 prima della trasmissione, lo user name è concatenato con : e la password. la stringa risultante è codificata con l algoritmo Base64. Ad esempio, dato lo user name Aladdin e password open sesame, la stringa risultante Aladdin:open sesame è codificata Base64, dando come risultato QWxhZGRpbjpvcGVuIHNlc2FtZQ== la stringa codificata Base64 e trasmessa e codificata dal ricevente, dando come risultato la user name separata da un : dalla password la codifica con l algoritmo Base64 rende illeggibile il contenuto a sguardi indiscreti, ma puo essere facilmente decodificata la sicurezza non è l obiettivo primario della fase di encoding serve solo a garantire la trasmissione/ricezione di caratteri che potrebbero avere dei problemi ad essere gestiti in HTTP Problema la password passa praticamente in chiaro sulla rete 36 Introdotta da HTTP 1.1, descritta in RFC 2069 la prima risposta da parte del server è del tipo WWW-Authenticate con il passaggio di una parola chiave denominata challenge (serie di bit equivalente al polinomio generatore CRC) per la codifica successiva da parte del client il client non manda la password in chiaro, ma una fingerprint (impronta digitale) della password, ovvero la password crittografata con il metodo MD5 (RFC 1321) utilizzando il challenge Per evitare l'abuso della circolazione delle password, anche se crittografate, insieme alla fingerprint vengono codificate anche informazioni come username, realm, URI richiesto, time stamp, etc. il server verifica la correttezza dei dati dal client riutilizzando il challenge (in maniera simile al CRC) Ovviamente non risolve il problema di fare arrivare dal server la password (challenge) la prima volta!

Riepilogo della lezione Fine della lezione Protocollo HTTP HTTP request HTTP response Richiami script CGI Cookies Authentication Domande? 37 38