22
Tito Flagella - [email protected] Il protocollo HTTP

Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

Tito Flagella - [email protected]

Il protocollo HTTP

Page 2: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

2

Il protocollo HTTP

• È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser);

• È basato su un modello richiesta/risposta• Versione Attuale: HTTP/1.1 (RFC 2616)

Page 3: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

3

Il protocollo HTTP: struttura di una richiesta

• una linea iniziale: tipo della richiesta (metodo), URI, protocol version

• Request headers (opzionali)• Una linea vuota• I dati della Richiesta (opzionale)

Page 4: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

4

Esempio di Richiesta

GET /index.html HTTP/1.0User-agent: MozillaAccept: text/html, text/plain, image/jpeg

Page 5: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

5

Il protocollo HTTP: principali metodi della richiesta

• GET: richiede il documento specificato nel URI• HEAD: richiede solo l’informazione header

relativa al documento• POST: richiede che il server accetti alcuni dati

dal browser, come l’input delle form html per un programma CGI

• PUT: sostituisce il contenuto di un documento del server con dati in arrivo dal client

Page 6: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

6

Header della Richiesta

• Accept: i tipi di file che il browser può accettare• Authorization: usato se il browser vuole

autenticarsi con il server; contiene informazioni credenziali, come username e password.

• User-agent: il nome e la versione del browser• Referer: la URL del documento che conteneva il

link seguito dall’utente.• Host: l’indirizzo IP e la porta della risorsa

richiesta

Page 7: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

7

Dati della Richiesta

• In caso di POST o PUT, il cliente invierà i dati dopo gli header, seguiti da una linea vuota

• In caso di GET or HEAD non ci sono dati da spedire

Page 8: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

8

Risposta del Server

• La risposta include:– versione del protocollo HTTP, codice di stato e

reason phrase– Header della Risposta– Dati della Risposta

Page 9: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

9

Esempio di Risposta HTTP

HTTP/1.0 200 OKServer: Netscape Enterprise Server/3.0Content-type: text/htmlContent-length: 76

<HTML><HEAD><TITLE>Hello World</Title></HEAD><BODY>Hello World</BODY></HTML>

Page 10: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

10

Codice di Stato

• Si tratta di un codice di tre cifre• Sono classificati in 4 categorie:

– 200-299 successo– 300-399 ridirezione– 400-499 errore sul lato client– 500-599 errore sul lato server

Page 11: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

11

Esempi di Stato HTTP

• 200: OK; operazione completata con successo• 302: ridirezione a una nuova URL; la URL

originale è stata spostata; non si tratta di un errore, gli agent compatibili cercheranno la nuova pagina

• 304: usa una copia locale; gli agent compatibili mandano una informazione su "last-modified" della copia della pagina in cache. Il server può rispondere con il codice 304 invece di mandare di nuovo la pagina

Page 12: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

12

Esempi di Stato HTTP (2)

• 401: non autorizzato. L’utente ha richiesto un documento ma non ha fornito uno username o una password validi

• 403: Vietato, l’accesso alla URL non è consentito• 404: Non trovato; il documento non è disponibile

sul server• 500: Server error; si è verificato un errore interno

del server

Page 13: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

13

Header della Risposta

• Contiene informazioni circa il server e i dati della risposta

• Gli header più comuni sono:– Server: nome e versione del server web– Date: la data corrente (Greenwich Mean Time)– Last-modified: la data di ultima modifica del documento

richiesto– Expires: la data di scadenza del documento– Content-length: dimensione in byte dei dati che seguono– Content-type: il tipo MIME dei dati che seguono– WWW-authenticate: usato durante l’autenticazione, include

informazioni necessarie per l’accesso

Page 14: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

14

Dati relativi alla Risposta

• Il server manda una linea vuota dopo gli header

• Tutto ciò che segue costituisce i dati relativi alla risposta

• Può trattarsi di un file html, o di qualunque altro tipo di file, anche dati binari

Page 15: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

HTTP GET con Telnet

telnet proxy 8080Trying 10.114.87.2...Connected to proxy.Escape character is '^]'.GET http://www.google.it/index.html HTTP/1.1

HTTP/1.0 200 OKCache-Control: privateContent-Type: text/html; charset=ISO-8859-1Set-Cookie: PREF=ID=c0b [....] domain=.google.itDate: Mon, 18 Feb 2008 16:07:53 GMTProxy-Connection: close

<html>[...]

Page 16: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

HTTP GET con curl

curl --proxy proxy:8080 -v http://www.google.it/search?q=ciao*** REQUEST ***GET http://www.google.it/search?q=ciao HTTP/1.1User-Agent: curl/7.16.4 (i386-redhat-linux-gnu) libcurl/7.16.4

OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.8Host: www.google.itPragma: no-cacheAccept: */*Proxy-Connection: Keep-Alive *** RESPONSE ***HTTP/1.0 403 ForbiddenContent-Type: text/htmlContent-Length: 4362Date: Mon, 18 Feb 2008 16:14:34 GMTHTTP/1.0 proxy connection set to keep alive!Proxy-Connection: keep-alive

<html>[...]

Page 17: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

17

• Il server distingue una risorsa statica da un’applicazione in due possibili modi:– estensione (es: .cgi)

• un programma cgi puo’ essere messo ovunque nel document’s tree del server

– nella url e’ indicata una directory registrata per contenere cgi, esempio:

• http://web.server.com/cgi-bin/feedback

• Si tratta di meccanismi attivabili/configurabili sul Server Web

URL Applicative

Page 18: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

18

• Una URL Applicativa è tipicamente suddivisa in 2 parti:[App path URL]?[query string]

• La App path URL identifica il nome dell'applicazione da attivare

• la query string, opzionale, può contenere eventuali parametri da passare al programma

Page 19: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

19

• Si possono compattare più parametri nella query string usando una codifica standard:– separare i parametri con &– sostituire i blank con +– Sottoporre ad escape (%xx) i caratteri speciali– esistono utility per codifica-decodifica. Es. perl

http://www.bio.cam.ac.uk/web/form.html)

Codifica dei parametri di input

Page 20: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

20

• Statica: parametri introdotti staticamente in html:– http://host.dominio/cgi-bin/env.pl?

user=rossi&password=secret

• Dinamica: parametri gestiti dinamicamente da una form html

Predisposizione dei parametri da client

Page 21: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

21

• Le form sono il meccanismo usato in html per l’interazione con l’utente

• Si occupano di raccogliere input dall’Utente e inviarlo opportunamente codificato al Web Server– usando il metodo get, i dati viaggiano come parte della

query string della URL, vengono passati al CGI come var. d’ambiente QUERY_STRING

– usando il metodo post, viaggiano come dati della richiesta, vengono passati al CGI come standard input

Uso delle Form in Html

Page 22: Il protocollo HTTP - Link.it · Il protocollo HTTP • È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); • È

22

• Le Form sono introdotte dal tag <form>• Oltre a html normale possono contenere i

seguenti tag:– <input> definisce text entry fields, checkboxes, radio

buttons o pushbuttons– <select> definisce dropdown menus e selection box– <textarea> definisce campi text-entry su più linee

• la Form può avere i seguenti attributi:– action, la URL del CGI (o altra estensione) cui inviare i

dati– method, il metodo HTTP usato per la sottomissione dei

dati (get o post)

Uso delle Form Html (2)