HTTP (HyperText Transfer Protocol) è un protocollo di comunicazione utilizzato per la trasmissione di dati tra un client (esempio: browser) e un server web.

È alla base della navigazione su Internet e permette ai browser di richiedere e ricevere risorse (come pagine HTML, immagini e video) da un server.

Quando un utente inserisce un URL nel browser, il protocollo HTTP definisce il modo in cui il browser e il server comunicano per caricare la pagina richiesta.

Il protocollo si basa su un modello richiesta-risposta: il client invia una richiesta al server, il quale risponde inviando i dati richiesti o segnalando eventuali errori.

HTTP è un protocollo stateless, il che significa che ogni richiesta è indipendente dalle altre e non viene mantenuto uno stato tra una comunicazione e l’altra.

Cos’è una richiesta HTTP

Una richiesta HTTP è il messaggio inviato dal client (esempio: browser) al server per richiedere una specifica risorsa. La richiesta include diverse componenti:

  • Metodo HTTP: definisce l’azione da eseguire (esempio: GETPOSTPUTDELETE);
  • URL: identifica la risorsa richiesta (esempio: /pagina.html);
  • Header: contengono informazioni aggiuntive sulla richiesta (esempio: tipo di browser o tipo di dati accettati);
  • Body: nei metodi come POST o PUT, contiene i dati inviati al server.

Esempio di richiesta:

pgsqlCopiaModificaGET /index.html HTTP/1.1
Host: www.esempio.com
User-Agent: Mozilla/5.0

In questo caso, il browser sta richiedendo la pagina index.html al server www.esempio.com utilizzando il metodo GET.

Cos’è una risposta HTTP

Una risposta HTTP è il messaggio inviato dal server al client in risposta a una richiesta. La risposta contiene:

  • Codice di stato: indica l’esito della richiesta (esempio: 200 OK404 Not Found500 Internal Server Error);
  • Header: forniscono informazioni sulla risposta (esempio: tipo di contenuto, lunghezza del file);
  • Body: contiene i dati richiesti (esempio: il codice HTML di una pagina).

Esempio di risposta:

yamlCopiaModificaHTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>

In questo caso, il server risponde con un codice di stato 200 OK, segnalando che la richiesta è stata eseguita correttamente e restituendo il codice HTML della pagina richiesta.

Differenze tra HTTP e HTTPS

La principale differenza tra HTTP e HTTPS riguarda la sicurezza nella trasmissione dei dati:

  • HTTP: trasferisce i dati in formato testo non criptato, rendendo le informazioni vulnerabili a intercettazioni e attacchi di tipo man-in-the-middle;
  • HTTPS: utilizza un protocollo di sicurezza chiamato TLS/SSL (Transport Layer Security/Secure Sockets Layer) per crittografare i dati durante la trasmissione, proteggendo le informazioni da accessi non autorizzati;
  • Certificato SSL: per utilizzare il protocollo più sicuro, è necessario installare un certificato SSL sul server, che autentica l’identità del sito e abilita la crittografia.

Un sito HTTPS è riconoscibile dalla presenza del lucchetto accanto all’URL nella barra del browser, mentre un sito HTTP viene spesso segnalato come non sicuro.