HTTP-huvuden är strängar med name:value -par (namn och värde separerade med ett kolon). De används för att kommunicera ytterligare information och metadata mellan en klient (vanligtvis en webbläsare) och ett applikation på en server. Denna information kan omfatta hur data är kodade, hur servern ska hantera data, dokumentets ålder med mera.

Svars-huvuden (från applikationen till klienten) är en del av applikationens svar och kan innehålla information som serverns plats, serverns namn osv.

Begärande-huvuden (från klienten till applikationen) är till hjälp om du vill anpassa din applikation. Det kan exempelvis handla om:

  • Rapportering av olika typer av innehåll per klientregion med hjälp av CF-IPCountry.
  • Användning av CF-Connecting-IP för att registrera klientens IP-adress i applikationens aktivitetslogg.
  • Utförande av felsökning eller övervakning av användarsessioner med hjälp av X-Request-ID.

Begärande-huvuden som läggs till av Kinsta

När du distribuerar en applikation på Kinsta så används följande huvuden för att skicka information till applikationen:

  • Host: Host-huvudet anger hostnamn och portnummer för den server som begärs.
  • X-Request-ID: Används för att identifiera en begäran mellan klienten och servern. Detta huvud kan vara användbart för felsökning.
  • X-Real-IP: Anger den verkliga IP-adressen för den klient som gjorde begärandet. Det här huvudet används vanligen av omvända proxies och belastningsutjämnings-system för att ange den ursprungliga klientens IP-adress.
  • X-Forwarded-For: Används för att ange klientens IP-adress och kan även innehålla en lista med IP-adresser om begärandet passerar genom flera proxys.
  • X-Forwarded-Host: Detta anger den ursprungliga host-datorn som begärs av klienten.
  • X-Forwarded-Port: Anger den port som klienten använder för att göra begärandet.
  • X-Forwarded-Proto: Visar det protokoll som klienten använder för att göra begärandet, exempelvis ”HTTP” eller ”HTTPS”
  • X-Forwarded-Scheme: Anger vilket system som klienten använder för att göra begärandet, exempelvis HTTP eller HTTPS
  • X-Scheme: Huvudet liknar X-Forwarded-Scheme och används för att ange det ursprungliga schema som begärts av klienten.
  • X-Original-Forwarded-For: Anger klientens ursprungliga IP-adress i en begäran som har passerat genom flera proxys.
  • Accept-Encoding: Anger de kodningstyper som klienten kan acceptera i svaret, t.ex. gzip eller deflate.
  • CF-Ray: En unik identifierare som genereras av Cloudflare-tjänsten för varje begäran.
  • CF-Visitor: Används av Cloudflare för att överföra information om klientens webbläsare och enhet till servern.
  • CF-EW-Via: Detta används av tjänsten Cloudflare Edge Workers för att ange att en Edge Worker har behandlat en begäran.
  • CDN-Loop: Nyttjas av vissa innehållsleveransnätverk för att ange att en begäran har fastnat i en slinga och måste avslutas.
  • Accept: Anger de medietyper som klienten kan hantera i svaret, t.ex. text/html eller application/json.
  • User-Agent: Visar klientens användaragentsträng, som kan användas för att identifiera klientens webbläsare och operativsystem.
  • CF-Connecting-IP: Detta anger IP-adressen för den klient som ansluter till servern via Cloudflare-nätverket.
  • CF-Worker: Används för att ange att en Cloudflare-medarbetare har behandlat en begäran.
  • CF-IPCountry: Anger landskoden för klientens IP-adress, enligt Cloudflare.

Visa huvudet på begärandet

Svars-huvuden kan visas med verktyg som Kinsta’s HTTP Status and Redirect Checker, curl, Postman, Insomnia, osv. Det är dock lite annorlunda att visa begärande-huvuden. För att visa begärande-huvuden så kan du använda programkoden för att se och rapportera de huvuden som skickas till applikationen. Här är ett exempel på detta med hjälp av Python:

från http.server importera 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_adress = (''', port)
httpd = server_class(server_adress, handler_class)
logging.info('Startar httpd...n')
försök:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
logging.info('Stoppar httpd...n')if __name__ == '__main__':
from sys import argvif len(argv) == 2:
run(port=int(argv[1]))
else:
run()

Relaterad dokumentation