Learning Center
Rete

Comprendere le richieste HTTP: struttura, metodi ed esempi

1 dic 2025
Hostman Team
Hostman Team

HTTP è la chiave della comunicazione su Internet. I metodi del protocollo HTTP permettono ai client di inviare richieste ai server e ai server di inviare risposte. Ogni sito web sul World Wide Web utilizza richieste HTTP, quindi è essenziale comprenderle.

Questo articolo analizza il concetto di richieste HTTP, la loro struttura, i metodi più comuni e alcuni esempi pratici per comprendere meglio il funzionamento del web.

Che cos’è una richiesta HTTP?
Copia link

Una richiesta HTTP è un messaggio in cui un client — ad esempio un browser — chiede a un host presente su un server una risorsa specifica. I client utilizzano gli URL nelle richieste HTTP per indicare al server quali risorse desiderano recuperare.

Componenti di una richiesta HTTP
Copia link

Ogni richiesta HTTP è composta da tre parti:

  • la request line (riga di richiesta)

  • gli header

  • il message body (corpo del messaggio)

Request Line
Copia link

La request line è la prima riga di una richiesta HTTP. Serve per iniziare un’azione sul server. Indica il metodo HTTP e la versione del protocollo. Include anche un’URI o un URL.

Esempio:

GET /index.html HTTP/1.1

Header
Copia link

Gli header seguono immediatamente la request line.

Forniscono informazioni aggiuntive dal client al server, come:

  • nome dell’host

  • informazioni sul browser (User-Agent)

  • preferenze linguistiche

  • tipi di contenuto accettati

Il server utilizza questi dati per identificare il browser e il sistema operativo del client. Gli header HTTP sono case-sensitive e seguono la sintassi Nome: Valore.

Esempio di header:

Host: example.com

User-Agent: Mozilla/5.0 (...)

Accept: application/json, text/plain, */*

Accept-Language: en-US,en;q=0.9

Accept-Encoding: gzip, deflate, br

Connection: keep-alive

Message Body
Copia link

Il corpo del messaggio è utilizzato per inviare dati al server. È facoltativo: non tutte le richieste HTTP lo includono. Tipicamente viene utilizzato con i metodi POST e PUT. Il server utilizza i dati ricevuti per processare la richiesta.

Metodi HTTP comuni
Copia link

Una richiesta HTTP connette un client a un server per svolgere diverse operazioni:

  • recuperare una risorsa

  • inviare dati

  • aggiornare contenuti

  • eliminare risorse

I metodi più diffusi sono i seguenti:

GET — Recuperare risorse
Copia link

La richiesta GET chiede al server una risorsa. Ogni volta che visiti una pagina web, il browser invia una richiesta GET per ottenere i dati necessari.

Caratteristiche:

  • cacheable

  • safe

  • idempotente

GET non modifica il contenuto del server, permette solo di leggerlo.

POST — Inviare dati
Copia link

POST viene utilizzato per inviare dati al server, ad esempio quando si compila un modulo o si carica un file.

Il body contiene i dati inviati. Più richieste POST identiche possono creare risorse multiple sul server.

PUT — Aggiornare risorse
Copia link

PUT funziona in modo simile a POST, ma serve per aggiornare dati esistenti.

Differenze principali:

  • POST = crea nuovi dati

  • PUT = aggiorna dati esistenti

PUT è idempotente, quindi eseguire più volte la stessa richiesta produce sempre lo stesso risultato.

DELETE — Rimuovere risorse
Copia link

DELETE chiede al server di eliminare una risorsa.

Se l’operazione va a buon fine, il server invia una conferma. DELETE è idempotente.

Che cos’è una risposta HTTP?
Copia link

Una risposta HTTP è il messaggio che il server invia al client dopo aver ricevuto una richiesta.

Ha una struttura simile a quella della richiesta, con tre parti:

  • status line

  • header

  • message body

Status Line
Copia link

Indica:

  • la versione HTTP utilizzata

  • il codice di stato

  • il messaggio corrispondente

Header
Copia link

Contengono informazioni quali:

  • data e ora della risposta

  • tipo di contenuto inviato

  • dettagli del server

  • istruzioni di caching

Message Body
Copia link

Contiene i dati inviati dal server, come:

  • HTML

  • JSON

  • XML

  • immagini

  • file

Codici di stato HTTP e significato
Copia link

I codici HTTP indicano il risultato della richiesta. Ogni codice ha tre cifre; la prima indica la categoria.

Codice

Descrizione

1xx

Risposte informative

2xx

Successo — richiesta elaborata correttamente

3xx

Reindirizzamento — sono necessarie ulteriori azioni

4xx

Errori lato client

5xx

Errori lato server

HTTP Header e la loro importanza
Copia link

Gli header sono fondamentali per la comunicazione client–server. Essi forniscono informazioni usate per diverse funzioni web.

Identificazione dell’host
Copia link

Indica quale dominio è servito dal server.

Caching
Copia link

Cache-Control e Expires gestiscono come memorizzare le risposte.

Gestione dei cookie
Copia link

Set-Cookie e Cookie gestiscono le sessioni utente.

Sicurezza
Copia link

Esempi:

  • Authorization — autenticazione

  • Content-Security-Policy — protezione contro XSS

Controllo della risposta
Copia link

Gli header indicano se la richiesta ha avuto successo o no.

Esempi pratici di richieste HTTP
Copia link

Questi esempi utilizzano Python e la libreria requests.

GET
Copia link

import requests

response = requests.get("https://api.example.com/data",

                        params={"param1": "value1", "param2": "value2"})

print(response.status_code)

print(response.json())

POST
Copia link

import requests

url = "https://api.example.com/users"

data = {

    "username": "newuser",

    "email": "newuser@example.com",

    "password": "securepassword"

}

response = requests.post(url, json=data)

if response.status_code == 201:

    print("User created successfully:", response.json())

else:

    print("Error:", response.status_code, response.text)

PUT
Copia link

import requests

url = "https://api.example.com/users/123"

data = {

    "username": "updateduser",

    "email": "updateduser@example.com"

}

response = requests.put(url, json=data)

if response.status_code == 200:

    print("User updated successfully:", response.json())

else:

    print("Error:", response.status_code, response.text)

DELETE
Copia link

import requests

url = "https://api.example.com/users/123"

response = requests.delete(url)

if response.status_code == 204:

    print("User deleted successfully.")

else:

    print("Error:", response.status_code, response.text)

Conclusione
Copia link

Le richieste HTTP svolgono un ruolo fondamentale nelle interazioni web. È quindi essenziale comprendere i vari metodi e il loro funzionamento. Scegliere il metodo più adatto garantisce una comunicazione fluida e migliora l’efficienza delle applicazioni web.