Intestazioni HTTP

Le intestazioni HTTP sono stringhe di coppie name:value (nome e valore separati da due punti) che vengono utilizzate per scambiare informazioni aggiuntive e metadati tra un client (solitamente un browser web) e un’applicazione su un server. Queste informazioni possono includere la codifica dei dati, il modo in cui il server deve gestire i dati, l’età del documento e altro ancora.

Le intestazioni di risposta (dall’applicazione al client) fanno parte della risposta dell’applicazione e possono contenere informazioni come la posizione del server, il nome del server, ecc.

Le intestazioni di richiesta (dal client all’applicazione) sono utili se volete personalizzare la vostra applicazione. Alcuni esempi sono:

  • Segnalazione di diversi tipi di contenuti in base alla regione del client utilizzando CF-IPCountry.
  • Utilizzare CF-Connecting-IP per registrare l’IP del client nel registro delle attività dell’applicazione.
  • Eseguire il debug o il monitoraggio delle sessioni utente utilizzando X-Request-ID.

Intestazioni di Richiesta Aggiunte da Kinsta

Quando distribuisci un’applicazione su Kinsta, vengono utilizzate le seguenti intestazioni per inviare informazioni all’applicazione:

  • Host: L’intestazione host specifica il nome dell’host e il numero di porta del server che viene richiesto.
  • X-Request-ID: Utilizzata per identificare una richiesta tra il client e il server. Questa intestazione può essere utile per il debug.
  • X-Real-IP: Specifica l’indirizzo IP reale del client che ha effettuato la richiesta. Questa intestazione è comunemente utilizzata dai reverse proxy e dai load balancer per indicare l’indirizzo IP originale del client.
  • X-Forwarded-For: Utilizzata per specificare l’indirizzo IP del client e può contenere anche un elenco di indirizzi IP se la richiesta passa attraverso più proxy.
  • X-Forwarded-Host: Specifica l’host originale richiesto dal client.
  • X-Forwarded-Port: Specifica la porta utilizzata dal client per effettuare la richiesta.
  • X-Forwarded-Proto: Specifica il protocollo utilizzato dal client per effettuare la richiesta, ad esempio “HTTP” o “HTTPS”
  • X-Forwarded-Scheme: Specifica lo schema utilizzato dal client per effettuare la richiesta, ad esempio “HTTP” o “HTTPS”
  • X-Scheme: L’intestazione è simile a X-Forwarded-Scheme e viene utilizzata per indicare lo schema originale richiesto dal client.
  • X-Original-Forwarded-For: Specifica l’indirizzo IP originale del client in una richiesta che è passata attraverso più proxy.
  • Accept-Encoding: Specifica i tipi di codifica che il client può accettare nella risposta, come ad esempio gzip o deflate.
  • CF-Ray: Un identificatore unico generato dal servizio Cloudflare per ogni richiesta.
  • CF-Visitor: Utilizzato da Cloudflare per trasmettere al server le informazioni sul browser e sul dispositivo del client.
  • CF-EW-Via: Utilizzato dal servizio Cloudflare Edge Workers per indicare che un Edge Worker ha elaborato una richiesta.
  • CDN-Loop: Utilizzato da alcune reti di distribuzione dei contenuti per indicare che una richiesta è bloccata in un loop e deve essere terminata.
  • Accept: Specifica i tipi di media che il client può gestire nella risposta, come text/html o application/json.
  • User-Agent: Specifica la stringa dello user agent del client, che può essere utilizzata per identificare il browser e il sistema operativo del client.
  • CF-Connecting-IP: Specifica l’indirizzo IP del client che si sta connettendo al server attraverso la rete Cloudflare.
  • CF-Worker: Utilizzato per indicare che un worker Cloudflare ha elaborato una richiesta.
  • CF-IPCountry: Specifica il codice paese dell’indirizzo IP del client, come determinato da Cloudflare.

Visualizzare le Intestazioni delle Richieste

Mentre le intestazioni delle risposte possono essere visualizzate con strumenti come HTTP Status e Redirect Checker di Kinsta, curl, Postman, Insomnia e così via, la visualizzazione delle intestazioni delle richieste è un po’ diversa. Per visualizzare le intestazioni delle richieste, potete utilizzare il codice della vostra applicazione per vedere e segnalare le intestazioni inviate. Ecco un esempio con Python:

from http.server import BaseHTTPRequestHandler, HTTPServer
import loggingclass RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
logging.info("Richiesta GET,nPath: %snHeaders:n%sn",
str(self.path), str(self.headers))
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
messaggio = f"{self.headers}"
self.wfile.write(bytes(messaggio, 'utf-8'))
returndef run(server_class=HTTPServer, handler_class=RequestHandler, port=8080):
logging.basicConfig(level=logging.INFO)
indirizzo_server = ('', porta)
httpd = server_class(indirizzo_server, handler_class)
logging.info('Avviare httpd...n')
try:
httpd.serve_forever()
tranne KeyboardInterrupt:
passa
httpd.server_close()
logging.info('Stopping httpd...n')if __name__ == '__main__':
from sys import argvif len(argv) == 2:
run(port=int(argv[1]))
altrimenti:
run()
Questo articolo ti è stato utile?