diff --git a/networking/023-http.md b/networking/023-http.md index cc30dbc..c0c993f 100644 --- a/networking/023-http.md +++ b/networking/023-http.md @@ -22,6 +22,22 @@ Una richiesta HTTP è strutturata in quattro macrosezioni: ![http-request](asset/img/http-request.png) +### Intestazione della Richiesta HTTP + +Gli header di una richiesta HTTP vengono utilizzati dal client per fornire al server informazioni utili all'elaborazione della risposta. Alcuni dei principali campi utilizzati: + +- `User-Agent`: specifica il tipo di client utilizzato per la richiesta, ad esempio il browser o l'applicazione +- `Accept`: indica quali tipi di contenuti il client è in grado di gestire. Ad esempio, l'header `Accept-Language` comunica le preferenze linguistiche del browser, permettendo al server di restituire contenuti nella lingua preferita +- `Connection`: Determina se la connessione TCP deve rimanere aperta o essere chiusa subito dopo la risposta. Il valore `keep-alive` serve a mantenere attiva la connessione +- `Host`: specifica l'host e la porta di destinazione della richiesta +- `Referrer`: indica il percorso o path da cui è partita la richiesta +- `Cookie`: invio dei cookie associati alla sessione o ad altre informazioni di identificazione, utili per mantenere lo stato della sessione utente e per personalizzare l'esperienza +- `Content-Type`: Specifica il tipo di contenuto che il client sta inviando nel corpo della richiesta, ad esempio `application/json` o `text/html` +- `Content-Length`: indica la dimensione, in byte, del contenuto presente nel corpo della richiesta +- `If-Modified-Since`: questo campo contiene un timestamp che indica l'ultima modifica nota al client. Il server utilizza questo dato per decidere se inviare il contenuto richiesto o restituire un codice 304 (*Not Modified*) se il contenuto non è stato aggiornato successivamente alla data specificata + +![header-http](asset/img/header-http.png) + ### Metodi HTTP I metodi HTTP indicano al server l'azione da eseguire su una risorsa. I principali metodi: @@ -33,3 +49,10 @@ I metodi HTTP indicano al server l'azione da eseguire su una risorsa. I principa - `TRACE`: impiegato a fini diagnostici e di debugging, aiutando a identificare eventuali problemi lungo il percorso della richiesta - `DELETE`: consente di eliminare una risorsa sul server. Anche questo metodo, per ragioni di sicurezza, è spesso disabilitato di default - `OPTIONS`: utilizzato per verificare quali metodi HTTP sono supportati dal server, consentendo così al client di conoscere le possibili azioni disponibili + +## URI, URL e URN + +Un `URI` (*Uniform Resource Identifier*) è un meccanismo per identificare in modo univoco una risorsa generica. Esistono due specializzazioni principali: + +- `URL` (*Uniform Resource Locator*): è comunemente utilizzato nel web e specifica il percorso dove la risorsa può essere raggiunta. Segue il formato: `protocollo://{hostname o nome dominio/ip}[:porta]/percorso/?parametro1=valore1¶metro2=valore2...` +- `URN` (*Uniform Resource Name*): rappresenta il contesto o namespace in cui è inserita la risorsa, senza indicarne il percorso di accesso. Un URN consente, ad esempio, di classificare un libro in base al suo genere, indipendentemente dalla sua ubicazione specifica diff --git a/networking/asset/img/header-http.png b/networking/asset/img/header-http.png new file mode 100644 index 0000000..5f8370f Binary files /dev/null and b/networking/asset/img/header-http.png differ