|
Made in |
DESCRIPTION | Introduzione al protocollo HTTP | Live Discussion - Skill: 2- JUNIOR |
Il protocollo HTTP (Hyper Text Transfer Protocol) viene usato da tutti i client e server web e gestisce il modo con cui questi si scambiano pagine HTML o altri file. |
||||||
Il client web (cioè un browser come Microsoft Internet Explorer, Netscape Navigator, Opera ecc.) utilizza l'HTTP per richiedere file al server web. In primo luogo vengono richieste pagine HTML, che dopo essere state ricevute, vengono processate dal browser che provvede a fare richiesta di eventuali nuovi file richiamati nel codice HTML (immagini, fogli di stile css, script esterni ecc.) e a visualizzare il tutto sul monitor dell'utente. Ogni richiesta http consta di: - Metodo (GET, HEAD, PUT ...) - URI (Uniform Resource Identifier) Il path o indirizzo completo della risorsa richiesta. - Versione del protocollo (HTTP/1.0 o HTTP/1.1) Un esempio tipico di una richiesta HTTP è: GET / HTTP/1.0 Alla richiesta possono seguire degli HTTP headers come Accept-Language , Date , Expires e vari altri (possono essere arbitrariamente definiti fra broswer e server).Esistono attualmente 3 specifiche del protocollo HTTP: HTTP/0.9 - Di fatto non è più utilizzato da nessuna parte HTTP/1.0 - Ancora abbastanza utilizzato e supportato da ogni browser e web server HTTP/1.1 - Introduce nuovi metodi (OPTIONS, TRACE, DELETE, PUT, CONNECT) e la gestione di Virtual Host. E' supportato da tutti i browser e server non troppo vecchi ed è utilizzato nella maggior parte dei casi. |
DESCRIPTION | I metodi HTTP | Live Discussion - Skill: 4- ADVANCED |
Un metodo HTTP può considerarsi un comando proprio del protocollo HTTP che il client richiede al server. Ne esistono vari, ma di fatto i più utilizzati sono GET (per richiedere un file) e POST (per inviare informazioni al server). |
||||||
GET - Richiede un file al server. La risposta è composta da vari header separati con due Carriage Return dalla risorsa effettivamente richiesta (il file HTML che contiene l'home page del sito). All'inizio della risposta viene specificato il protocollo usato (HTTP/1.1) e lo Status Code che indica l'esito della richiesta fatta (200 OK vuol dire che la richiesta ha avuto successo e il server ha fornito i dati chiesti).GET / HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 23 Oct 2002 08:18:47 GMT Server: Apache/1.3.26 (Unix) PHP/4.2.3 X-Powered-By: PHP/4.2.3 Set-Cookie: PHPSESSID=8fd7c6a69c84da8276187e18a3067b85; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Connection: close Content-Type: text/html [Contenuto della pagina HTML..] HEAD - Richiede solo l'header, senza la risorsa (il file HTML, l'immagine, ecc.). Di fatto viene usato soprattutto per diagnostica. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 23 Oct 2002 08:31:36 GMT Server: Apache/1.3.26 (Unix) PHP/4.2.3 X-Powered-By: PHP/4.2.3 Set-Cookie: PHPSESSID=d0226985ad2282fd9e2d9f6fb868b92a; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Connection: close Content-Type: text/html POST - Invia informazioni all'URI specificato. Le informazioni sono presenti in coppie attributo=valore&attributo=valore e vengono processate dal server sulla base di come è configurato e di come è fatto il file a cui vengono postate. Viene qui riportato il POST di un browser reale, con tutti gli header inviati dal browser stesso e l'inizio delle coppie attributo=valore. POST /modify/modify.php HTTP/1.1 HTTP/1.1 200 OK Date: Wed, 23 Oct 2002 08:38:51 GMT Server: Apache/1.3.26 (Unix) PHP/4.2.3 X-Powered-By: PHP/4.2.3 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Keep-Alive: timeout=25, max=85 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html [HTML della pagina di risposta] I metodi finora elencati sono comuni sia al protocollo HTTP/1.0 che all'HTTP/1.1, quelli che seguono invece sono esclusivi del HTTP/1.1 e, spesso, non vengono permessi dai server. Nella configurazione di default di Apache, per esempio, sono disattivati. Se si prova ad utilizzarli su server che non li permettono si ottiene uno Status code: 405 Method not allowed. Quando si usa il protocollo HTTP/1.1 è necessario specificare l'host a cui si intende fare la richiesta. OPTIONS - Richiede l'elenco dei metodi permessi dal server. OPTIONS * HTTP/1.1 TRACE - Traccia una richiesta, visualizzando come viene trattata dal server. TRACE * HTTP/1.1 DELETE - Cancella una risorsa (file) sul server. L'utente con cui gira il web server deve poter avere permessi in scrittura sul file indicato e il server deve essere configurato per poterlo fare. DELETE /info.html HTTP/1.1 PUT - Uploada un file sul server, creandolo o riscrivendolo, con il nome indicato e i contenuti specificati nella parte che segue gli header. PUT /info.html HTTP/1.1 |
DESCRIPTION | Gli header HTTP | Live Discussion - Skill: 4- ADVANCED |
Gli header HTTP vengono trasferiti fra client e server e generalmente contengono meta-informazioni sul contenuto effettivo della risorsa (file) trasferita. Il loro formato è: NomeHeader: Valore (CRLF) in una richiesta o una risposta HTTP possono esistere un numero arbitrario di header, il loro ordine non è importante ma è raccomandato un ordine sulla base delle categorie sotto indicate. |
||||||
Esistono 4 categorie di header, di queste citiamo solo le voci più significative: 1 - GENERAL HEADERS Contengono informazioni generali non relative al server, al client, al dato trasferito o al protocollo HTTP. Cache-Control: direttive - Definisce le direttive sia associate a richieste che a risposte (separate da virgola) a cui devono obbedire tutti i sistemi di caching fra client e server. Quando sul proprio browser si cambiano le impostazioni relative alla cache, di fatto si modificano le direttive gestite con questo header.Date: data_rfc-1123 - (es: Wed, 23 Oct 2002 18:59:12 GMT) La data è quella in cui il messaggio viene originato.Pragma: no-cache - Il contenuto richiesto non deve essere messo in alcuna cache (del browser, di un proxy ecc.). Fondamentale per pagine dinamiche che devono essere sempre aggiornate.Via: protocollo host_ricevente [commento] - Va aggiunto da proxy o gateway per indicare i protocolli e gli host intermedi fra client e server attraverso i quali è passata la richiesta.Upgrade: protocollo/versione - Permette al client di specificare che supporta una versione di protocollo superiore a quella che si sta utilizzando (tipicamente HTTP/1.1 rispetto a HTTP/1.0) e al server di indicare su quale protocollo ha switchato.2 - REQUEST HEADERS Sono riservati alla richieste che il client esegue e contengono informazioni riguardo la richiesta stessa o il client. Accept: tipo/sottotipo [;q=valore] - Indica quali tipi di file sono accettati dal client, in formato MIME (es: text/html). Con il parametro q (valori da 0 a 1) si definisce la preferenza relativa al tipo indicato (es: Accept: text/plain; q=0.5, text/html; q=0.8).Accept-Charset: charset [;q=valore] - Indica i charset (set di caratteri per le diverse lingue) il client accetta e in che ordine.Accept-Encoding: encoding-type [;q=valore] - Indica il tipo di encoding che il client può accettare (es: Accept-Encoding: gzip, default, compress;q=0.9).Accept-Language: lingua [;q=valore] - Indica la lingua che il client preferisce e quali può comunque accettare (es: Accept-Language: en-us, en;q=0.5).Authorization: credenziali - Quando l'utente si è autenticato e accede a pagine protette, il client con questo header fornisce le credenziali richeste ed evita ultetiori richieste di autenticazione da sottoporre all'utente.3 - RESPONSE HEADERS Sono riservati alle risposte del server e contengono info sul server stesso o sulla risorsa richiesta. Fra questi: Age: secondi - Tempo stimato da quando è stata generata la risposta sul server.Server string - Contiene informazioni sulla versione del software utilizzata dal server4 -ENTITY HEADERS Contengono meta-informazioni sull'entità (file) trasferito. Content-Encoding: encoding - Indica quali tipi di encoding (es: gzip) sono stati fatte sul contenuto del messaggio, per permettere al client di decodificarlo.Content-Language: lingue - Indica la lingua presunta dell'utente che riceve il file, si basa sull'analogo Request header Accept-Languages.Content-Lenght: bytes - Indica la lunghezza in byte del file servito.Expires: data - Indica la data dopo la quale il file servito è da considerare obsoleto. Va considerata da tutti i meccanismi di cache coinvolti nella richiesta.Last-Modified: data - Indica la data di ultima modifica del file.
|
DESCRIPTION | Status codes del protocollo HTTP | Live Discussion - Skill: 3- INTERMEDIATE |
I server HTTP rispondono utilizzando linee di status che informano il client sull'esito della richiesta. Gli status contengono 3 campi: versione del protocollo HTTP, status code e descrizione. Lo status code è dato da un numero a 3 cifre con i seguenti significati: 1XX - Informational 2XX - Client request successful 3XX - Client request redirected, futher action necessary 4XX - Client request incomplete 5XX - Server errors |
||
1xx - INFORMATIONAL Questa classe di status consiste solo nella status line e in headers opzionali. HTTP/1.0 non definisce nessuno status code 1XX. 100 Continue - Il client può continuare con la sua richiesta. Questa risposta intermedia è inviata al client dal server per informarlo che la parte iniziale della sua richiesta non è stata respinta. Il client ora può completarla o ignorare la risposta se la richiesta è gia stata inviata per intero. Quando la richiesta è stata completamente inviata il server invierà una risposta finale. 101 Switching Protocols - Il server riceve una richiesta per il cambiamento del protocollo per quella connessione. 2xx - SUCCESSFUL CLIENT REQUEST I seguenti status code indicano che la richiesta da parte del client è stata ricevuta, capita e accettata. 200 OK - La richiesta è stata accolta, il server risponde con i dati richiesti. E' la risposta normale per un file correttamente trasferito. 201 Created - La richiesta è stata effettuata ed una nuova risorsa è stata creata. L'URI rinviato nella risposta fa riferimento alla nuova risorsa creata. 202 Accepted - La richiesta è stata accettata ma non ancora processata. 203 Non-Authorative Information - L'insieme delle informazioni rimandate contenute nell'entity-header non è l'insieme di informazioni mandate dal server di origine ma provengono da una copia fatta in locale o da terzi. 204 No Content - Il server ha effettuato la richiesta ma non si necessita il rinvio dell'entity-body. A questa risposta il browser non dovrebbe aggiornare il documento visualizzato. 205 Reset Content - Il browser alla ricezione di questo status code dovrebbe resettare il contenuto del form che ha causato l'invio della richiesta. 206 Partial Content - Il server ha effettuato un GET parziale della risorsa. Questo succede quando risponde a una richiesta contenente un Range header. 3xx - CLIENT REQUEST REDIRECTED Questa classe di status indica che si necessita di un'ulteriore azione per far si che la richiesta sia correttamente effettuata. 300 Multiple Choices L'URI richiesto corrisponde a piu documenti (per esempio un documento disponibile in piu lingue). 301 Moved Permanently - La risorsa richiesta è stata assegnata definitivamente ad un nuovo URI. 302 Moved Temporarily - La risorsa richiesta è stata assegnata temporaneamente ad un nuovo URI. Il client può usare il nuovo URI per le attuali richieste, ma in futuro (quando non vi sarà piu redirezione) dovrà usare il vecchio URI. 303 See Other - La risorsa richiesta si trova in un altro URI specificato nel Location header. 304 Not Modified - Il Client ha effettuato una richiesta GET condizionale usando l'If-Modified-Since header, ma la risorsa non è stata ancora modificata. La risorsa non viene mandata in quanto il client la possiede gia in locale. 305 Use Proxy - La risorsa richiesta deve passare per un proxy il cui l'URI è dato nel Location field. 4xx - CLIENT REQUEST ERRORS La classe di status 4XX è riservata ai casi in cui il client commette degli errori. 400 Bad Request - Richiesta non capita dal server causa sintassi errata. 401 Authorization Required - Questo risultato è dato dal WWW-Authenticate header per indicare che la richiesta era sprovvista dell'autorizzazione che quella determinata risorsa richiede. 402 Payment Required - Questo codice è riservato ad usi futuri. 403 Forbidden - Il server capisce la richiesta ma si rifiuta di compierla. La richiesta non dovrebbe essere ripetuta. 404 Not Found - Il server non ha trovato nulla che corrisponda all'URI richiesto. Dopo il codice 200, questo è tipicamente quello più riscontrato nei log dei server web. 405 Method Not Allowed - Il metodo specificato nella request line non è disponibile per l'URI richiesto 406 Not Acceptable (encoding) - La risorsa identificata tramite richiesta può solo generare una risposta che ha caratteristiche incompatibili con gli accept headers contenuti nella richiesta. 407 Proxy Authentication Required - Questo codice indica che il client deve prima autenticarsi con il proxy, usando l'header Proxy-Authenticate. 408 Request Timed Out - Il client non ha fornito una richiesta nel tempo massimo di attesa del server. 409 Conflict - La richiesta non puo essere completata causa conflitto con il corrente stato della risorsa. 410 Gone - La risorsa richiesta non è piu disponibile sul server e il server non conosce indirizzi su cui ridirezionare. 411 Length Required - Il server si rifiuta di accettare la richiesta in quanto il client non ha definito il Content-Length. 412 Precondition Failed - Una o piu condizioni specificate negli IF request headers è risultata falsa al momento del test del server. 413 Request Entity Too Large - La richiesta è piu grande rispetto a quello che il server può processare. 414 Request URI Too Long - L'URI richiesto è troppo lungo per essere interpretato dal server. 415 Unsupported Media Type - Il corpo della richiesta è in un formato non supportato. 5xx - SERVER ERRORS Questa classe di status è riservata ai casi in cui il server commette un errore o non è in grado di performare la richiesta. In genere richiede un intervento sistemistico sul server. 500 Internal Server Error - Il server è in una situazione inaspettata e non può rispondere alle richieste. 501 Not Implemented - Il server non è implementato per rispondere correttamente alla richiesta effettuata. 502 Bad Gateway - Il server collegato ad un gateway o ad un proxy, riceve una risposta non valida da questo. 503 Service Unavailable - Il server non può rispondere causa temporaneo overload. 504 Gateway Timeout - Il server collegato ad un gateway o ad un proxy, non riceve una risposta da questo nel tempo di attesa massimo impostato. 505 HTTP Version Not Supported - Il server non supporta la versione del protocollo HTTP utilizzato per fare la richiesta. |
Openskills LiveBook: Apache - Installazione e configurazione | (C)oresis Srl | GNU FDL licence | Generated: 23/10/2003 |