diff --git a/networking/023-http.md b/networking/023-http.md index c0c993f..b9b8325 100644 --- a/networking/023-http.md +++ b/networking/023-http.md @@ -15,10 +15,10 @@ In quanto protocollo dell'application layer, HTTP si appoggia al TCP del transpo Una richiesta HTTP è strutturata in quattro macrosezioni: -1. **Riga di richiesta**: contiene il metodo HTTP (ad esempio, GET, POST, PUT, DELETE, ecc.) e la versione di HTTP utilizzata, solitamente la versione 2 -2. **Intestazione** o **Header**: ena serie di coppie chiave-valore che forniscono al server ulteriori informazioni, come ad esempio il tipo di contenuto, le informazioni sul client, le preferenze sulla codifica, e altro ancora -3. **Riga vuota**: Separa le intestazioni dal corpo della richiesta -4. **Corpo della richiesta** o **Body** (Opzionale): contiene i dati da inviare al server +1. `Riga di richiesta`: contiene il metodo HTTP (ad esempio, GET, POST, PUT, DELETE, ecc.) e la versione di HTTP utilizzata, solitamente la versione 2 +2. `Intestazione` o `Header`: ena serie di coppie chiave-valore che forniscono al server ulteriori informazioni, come ad esempio il tipo di contenuto, le informazioni sul client, le preferenze sulla codifica, e altro ancora +3. `Riga vuota`: Separa le intestazioni dal corpo della richiesta +4. `Corpo della richiesta` o `Body` (Opzionale): contiene i dati da inviare al server ![http-request](asset/img/http-request.png) @@ -38,7 +38,30 @@ Gli header di una richiesta HTTP vengono utilizzati dal client per fornire al se ![header-http](asset/img/header-http.png) -### Metodi HTTP +## HTTP Response + +Una risposta HTTP è il messaggio che un server invia a un client (come un browser o un'applicazione) dopo aver ricevuto e processato una richiesta HTTP. La struttura di una risposta HTTP è composta da quattro elementi principali: + +- `Riga di stat`o, la prima riga della risposta che include la *versione del protocollo HTTP*, il *codice di stato* e la frase di stato descrittiva (ad esempio, *OK*) +- `Headers`: le righe successive contengono le intestazioni, organizzate come coppie chiave-valore. Queste intestazioni forniscono informazioni supplementari sulla risposta, quali il tipo di contenuto, la lunghezza del contenuto e altri metadati +- `Riga vuota` che separa le intestazioni dal corpo della risposta. +- `Body`: il corpo del messaggio, che contiene i dati effettivi della risposta + +![http-response](asset/img/http-response.png) + +### Codici di stato + +I codici di stato HTTP sono numeri a tre cifre che il server invia al client per indicare l'esito di una richiesta. Si suddividono in cinque categorie principali, identificate dalla prima cifra: + +- `1XX` - *Informativi*: indicano che la richiesta del client è stata ricevuta e il server sta proseguendo con l'elaborazione (es. *100 Continue*) +- `2XX` - *Successo*: la richiesta è stata compresa e accettata correttamente dal server (es. *200 OK*) +- `3XX` - *Redirect*: la richiesta richiede ulteriori azioni per essere completata, solitamente tramite un reindirizzamento a un nuovo URL. (es. *301 Permanently Redirect*) +- `4XX` - *Errori del client*: indicano che la richiesta contiene errori, ad esempio di sintassi o perché la risorsa richiesta non è stata trovata (es. *400 Bad Request*, *404 Not Found*) +- `5XX` - *Errori del server*: il server ha incontrato un errore o una condizione impossibile da gestire che ha impedito la soddisfazione della richiesta (es. *500 Internal Server Error*, *503 Service Unavailable*) + +![http-status-code](asset/img/http-status-code.png) + +## Metodi HTTP I metodi HTTP indicano al server l'azione da eseguire su una risorsa. I principali metodi: diff --git a/networking/asset/img/http-response.png b/networking/asset/img/http-response.png new file mode 100644 index 0000000..273509a Binary files /dev/null and b/networking/asset/img/http-response.png differ diff --git a/networking/asset/img/http-status-code.png b/networking/asset/img/http-status-code.png new file mode 100644 index 0000000..7e4f3fd Binary files /dev/null and b/networking/asset/img/http-status-code.png differ