HTTP-headere er strenge af name:value -par (navn og værdi adskilt af et kolon), der bruges til at kommunikere yderligere oplysninger og metadata mellem en klient (normalt en webbrowser) og et program på en server. Disse oplysninger kan omfatte oplysninger om, hvordan data er kodet, hvordan serveren skal håndtere data, dokumentets alder og meget mere.

Request headers (fra applikationen til klienten) er en del af applikationens svar og kan indeholde oplysninger som f.eks. serverplacering, servernavn osv.

Request headers (fra klienten til applikationen) er nyttige, hvis du ønsker at tilpasse dit program. Et par eksempler er:

  • Rapportering af forskellige typer indhold pr. klientregion ved hjælp af CF-IPCountry.
  • Brug af CF-Connecting-IP til at registrere klientens IP-adresse i applikationens aktivitetslog.
  • Udførelse af debugging eller overvågning af brugersessioner ved hjælp af X-Request-ID.

Request Headers tilføjet af Kinsta

Når du implementerer et applikation på Kinsta, bruges følgende headere til at sende oplysninger til applikationen:

  • Host: Host-headeren angiver værtsnavnet og portnummeret for den server, der anmodes om.
  • X-Request-ID: Bruges til at identificere en anmodning mellem klienten og serveren. Denne header kan være nyttig i forbindelse med fejlfinding.
  • X-Real-IP: Angiver den reelle IP-adresse på den klient, der har foretaget anmodningen. Denne header bruges almindeligvis af reverse proxies og load balancers til at angive den oprindelige klient-IP-adresse.
  • X-Forwarded-For: Bruges til at angive klientens IP-adresse og kan også indeholde en liste over IP-adresser, hvis anmodningen passerer gennem flere proxyer.
  • X-Forwarded-Host: Angiver den oprindelige host, som klienten har anmodet om.
  • X-Forwarded-Port: Angiver den port, som klienten bruger til at sende anmodningen.
  • X-Forwarded-Proto: Angiver den protokol, som klienten bruger til at sende anmodningen, f.eks. “HTTP” eller “HTTPS”
  • X-Forwarded-Scheme: Angiver det skema, som klienten bruger til at foretage anmodningen, f.eks. “HTTP” eller “HTTPS”
  • X-Scheme: Denne header svarer til X-Forwarded-Scheme og bruges til at angive det oprindelige scheme, som klienten har anmodet om.
  • X-Original-Forwarded-For: Angiver den oprindelige klient-IP-adresse i en anmodning, der har passeret flere proxyer.
  • Accept-Encoding: Angiver de kodningstyper, som klienten kan acceptere i svaret, f.eks. gzip eller deflate.
  • CF-Ray: En unik identifikator, der genereres af Cloudflare-tjenesten for hver anmodning.
  • CF-Visitor: Bruges af Cloudflare til at overføre oplysninger om klientens browser og enhed til serveren.
  • CF-EW-Via: Bruges af Cloudflare Edge Workers-tjenesten til at angive, at en Edge Worker har behandlet en anmodning.
  • CDN-Loop: Bruges af nogle indholdsleveringsnetværk til at angive, at en anmodning sidder fast i en loop og skal afsluttes.
  • Accept: Angiver de medietyper, som klienten kan håndtere i svaret, f.eks. text/html eller application/json.
  • User-Agent: Angiver klientens user agent-streng, som kan bruges til at identificere klientens browser og operativsystem.
  • CF-Connecting-IP: Angiver IP-adressen på den klient, der opretter forbindelse til serveren via Cloudflare-netværket.
  • CF-Worker: Bruges til at angive, at en Cloudflare-medarbejder har behandlet en anmodning.
  • CF-IPCountry: Angiver landekoden for klientens IP-adresse, som bestemt af Cloudflare.

Visning af request headers

Mens svarheadere kan ses med værktøjer som Kinsta’s HTTP Status and Redirect Checker, curl, Postman, Insomnia osv., er det lidt anderledes at se request headers. For at se request headers kan du bruge din applikations kode til at se og rapportere de headers, der sendes til den. Her er et eksempel på dette ved hjælp af Python:

from http.server import 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_address = (''', port)
httpd = server_class(server_address, handler_class)
logging.info('Starting httpd...n')
try:
httpd.serve_forever()
undtagen KeyboardInterrupt:
pass
httpd.server_close()
logging.info('Stopping httpd...n')if __name__ == '__main__':
from sys import argvif len(argv) == 2:
run(port=int(argv[1]))
else:
run()

Relateret dokumentation