Codici di stato, cookie, sessioni ed evoluzione HTTP

📋 Obiettivi di apprendimento
Classificare i codici di stato HTTP nelle cinque classi (1xx–5xx) e interpretare i più comuni
Spiegare perché HTTP è stateless e come cookie e sessioni risolvono questo limite
Confrontare cookie e sessioni indicando dove vengono salvati, la durata e i limiti di dimensione
Descrivere le principali novità di HTTP/2 e HTTP/3 rispetto a HTTP/1.1
📄
Slides
slide complete con diagrammi
🔬
Lab
JSON Placeholder
GitHub →

I codici di stato HTTP

I codici di stato sono la risposta del server all’esito di ogni richiesta HTTP. Sono codici numerici a tre cifre, organizzati in cinque classi in base alla prima cifra.

1xx
Informativi

La richiesta è stata ricevuta, elaborazione in corso. Es: 100 Continue

2xx
Successo

La richiesta è stata completata con successo. Es: 200 OK, 201 Created, 204 No Content

3xx
Redirezione

Il client deve compiere un’azione ulteriore. Es: 301 Moved Permanently, 302 Found

4xx
Errore client

Problema nella richiesta inviata dal client. Es: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found

5xx
Errore server

Problema durante l’elaborazione sul server. Es: 500 Internal Server Error, 503 Service Unavailable

HTTP è stateless — cookie e sessioni

HTTP è un protocollo stateless: il server, una volta inviata la risposta, non mantiene alcuna memoria di ciò che il client ha richiesto in precedenza. Ogni richiesta è trattata come se fosse la prima.

Questo è efficiente, ma crea un problema pratico: come fa un sito a ricordare che sei loggato quando passi da una pagina all’altra? La soluzione si ottiene attraverso due tecniche: cookie e sessioni.

🍪 COOKIE
Dove Salvati sul dispositivo del client
Come Scambiati come header HTTP in ogni richiesta/risposta
Durata Impostata come parametro alla creazione (session cookie o persistente)
Dimensione Massimo 4 KB per cookie
Elimina L’utente può eliminarli dalle impostazioni del browser
GDPR Regolati dal GDPR — richiede consenso esplicito per i cookie non essenziali
🗄️ SESSIONI
Dove Salvate sul server; al client viene inviato solo un ID di sessione
Come Il server mantiene i dati attivi per tutta la durata della sessione
Durata Specificata nei file di configurazione del server (es. in PHP)
Dimensione Nessun limite pratico di dimensione
Elimina La cancellazione va fatta lato server

Evoluzione: HTTP/1.1, HTTP/2 e HTTP/3

Il protocollo HTTP ha subito importanti evoluzioni per rispondere alla crescente complessità delle pagine web moderne.

HTTP/1.0

Connessioni non persistenti: per ogni richiesta HTTP viene aperta una nuova connessione TCP e poi chiusa. Una pagina con 10 immagini richiedeva 10 connessioni TCP separate — lento e dispendioso.

HTTP/1.1
ancora molto usato oggi

Introduce le connessioni persistenti: la connessione TCP rimane aperta per più richieste sequenziali. Con pipelining, il client può inviare più richieste senza aspettare le risposte precedenti.

HTTP/2
standard attuale raccomandato
  • Multiplexing: più richieste e risposte viaggiano in parallelo sulla stessa connessione TCP
  • Header compression: riduce l’overhead degli header ripetuti
  • Server push: il server può inviare risorse prima che il client le richieda
  • Utilizzato con TLS per ottenere HTTPS (cifratura end-to-end)
HTTP/3
in adozione — non ancora dominante
  • Abbandona TCP: usa QUIC (protocollo di Google basato su UDP)
  • Riduce drasticamente la latenza di connessione
  • Migliora le prestazioni su reti mobili e con perdita di pacchetti
  • Crittografia integrata — non opzionale
📌 Riepilogo — Punti chiave
  • I codici 2xx indicano successo, 4xx errore del client, 5xx errore del server
  • HTTP è stateless: cookie (client-side, max 4KB, regolati da GDPR) e sessioni (server-side, illimitate) mantengono lo stato
  • HTTP/1.1 usa connessioni persistenti; HTTP/2 aggiunge multiplexing e header compression
  • HTTP/3 usa QUIC su UDP per latenza minima — ancora in fase di adozione

Lascia un commento