HTTP headers

HTTP headers zijn strings van name:value paren (naam en waarde gescheiden door een dubbele punt) die worden gebruikt om aanvullende informatie en metadata mee te delen tussen een client (meestal een webbrowser) en een applicatie op een server. Deze informatie kan bevatten hoe gegevens gecodeerd zijn, hoe de server met gegevens moet omgaan, de leeftijd van het document, en meer.

Response headers (van de applicatie naar de client) maken deel uit van het antwoord van de applicatie en kunnen informatie bevatten als de locatie van de server, de naam van de server, enz.

Request headers (van de client naar de applicatie) zijn nuttig als je je applicatie wilt aanpassen. Enkele voorbeelden zijn:

  • Het rapporteren van verschillende soorten content per regio van de client met behulp van CF-IPCountry.
  • CF-Connecting-IP gebruiken om het IP van de client vast te leggen in het activiteitenlogboek van de applicatie.
  • Het uitvoeren van debugging of het monitoren van gebruikerssessies met behulp van X-Request-ID.

Request headers toegevoegd door Kinsta

Wanneer je een applicatie op Kinsta deployt, worden de volgende headers gebruikt om informatie naar de applicatie te sturen:

  • Host: De host header specificeert de hostnaam en het poortnummer van de server die wordt opgevraagd.
  • X-Request-ID: Wordt gebruikt om een request tussen de client en de server te identificeren. Deze header kan nuttig zijn voor debugging.
  • X-Real-IP: Specificeert het echte IP adres van de client die het request doet. Deze header wordt vaak gebruikt door reverse proxies en load balancers om het origin IP adres van de client aan te geven.
  • X-Forwarded-For: Wordt gebruikt om het IP adres van de client aan te geven en kan ook een lijst van IP adressen bevatten als het request door meerdere proxies gaat.
  • X-Forwarded-Host: Geeft de origin host aan die door de client is opgevraagd.
  • X-Forwarded-Port: Specificeert de poort die door de client wordt gebruikt om het request in te dienen.
  • X-Forwarded-Proto: Specificeert het protocol dat de client gebruikt om het request te doen, zoals “HTTP” of “HTTPS.”
  • X-Forwarded-Scheme: Specificeert het schema dat de client gebruikt om het request te doen, zoals “HTTP” of “HTTPS.”
  • X-Scheme: De header is vergelijkbaar met X-Forwarded-Scheme, en wordt gebruikt om het oorspronkelijke schema aan te geven dat door de cliënt is aangevraagd.
  • X-Original-Forwarded-For: Specificeert het origin IP adres van de client in een request dat door meerdere proxies is gegaan.
  • Accept-Encoding: Geeft de coderingstypes aan die de cliënt in het antwoord kan accepteren, zoals gzip of deflate.
  • CF-Ray: Een unieke identificatie die door de Cloudflare dienst voor elk request wordt gegenereerd.
  • CF-Visitor: Gebruikt door Cloudflare om informatie over de browser en het apparaat van de client naar de server te sturen.
  • CF-EW-Via: Gebruikt door de dienst Cloudflare Edge Workers om aan te geven dat een Edge Worker een request heeft verwerkt.
  • CDN-Loop: Gebruikt door sommige content delivery networks om aan te geven dat een request vastzit in een loop en beëindigd moet worden.
  • Accept: : Specificeert de mediatypen die de client in het antwoord kan verwerken, zoals text/html of application/json.
  • User-Agent: Geeft de user agent string van de client aan, die gebruikt kan worden om de browser en het besturingssysteem van de client te identificeren.
  • CF-Connecting-IP: Specificeert het IP adres van de client die via het Cloudflare netwerk verbinding maakt met de server.
  • CF-Worker: Wordt gebruikt om aan te geven dat een Cloudflare worker een request heeft verwerkt.
  • CF-IPCountry: Geeft de landcode van het IP adres van de client aan, zoals bepaald door Cloudflare.

Request headers bekijken

Waar response headers bekeken kunnen worden met tools als Kinsta’s HTTP Status and Redirect Checker, curl, Postman, Insomnia, enz. werkt het bekijken van request headers iets anders. Om request headers te bekijken kun je de code van je applicatie gebruiken om de headers die er naar toe worden gestuurd te bekijken en te rapporteren. Hier is een voorbeeld met Python:

uit http.server importeer BaseHTTPRequestHandler, HTTPServer
import loggingclass RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
logging.info("GET request,nPath: %snHeaders:n%sn",
str(self.path), str(self.headers))
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
message = f"{self.headers}"
self.wfile.write(bytes(message, 'utf-8'))
returndef run(server_class=HTTPServer, handler_class=RequestHandler, port=8080):
logging.basicConfig(level=logging.INFO)
server_adres = ('', poort)
httpd = server_class(server_adres, handler_class)
logging.info('httpd starten...n')
proberen:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
logging.info('Stoppen met httpd...n')if __name__ == '__main__':
from sys import argvif len(argv) == 2:
run(port=int(argv[1]))
anders:
run()
Was dit artikel nuttig?