curl: Host-Header verändern

Symbolbild für HTTP-thematisierende Artikel

Im HTTP hat der Host-Header eine besondere Rolle: er ermöglicht es, verschiedene Websites verschiedener Domains auf einer IP-Adresse betreiben zu können. Hierfür sendet der Browser in seinem Request eine Information, zu welcher Domain er den Server nun befragt, mit, da der Webserver nicht sehen kann, über welche DNS-Anfrage der Client auf seine IP-Adresse gelangte.

Folgendes Szenario: soll nun beim Testen von Konfigurationen (Virtual Hosts,...) eines Webservers diese auf Funktion überprüft werden, ohne die IP-Adresse bereits im DNS zu konfigurieren und so "live" zu schalten, bleibt einerseits die Option, über die Hosts-Datei lokal die DNS-Auflösung zu "überschreiben" – anderseits kann das Vorhaben besonders bei kleineren Tests viel einfacher umgesetzt werden, indem curl für einen Request angewiesen wird, einen eigens gesetzten Host-Header mitzusenden. Das sieht dann z.B. so aus:

curl -H "Host: myhost.tld" 172.16.1.1

In diesem Fall würde die Antwort vom Webserver in Quelltextform angezeigt werden. Anstatt 172.16.1.1 wird natürlich die Webserver-IP eingetragen - auch DNS-Namen werden hier unterstützt (welche aber korrekt auflösbar sein müssen). Ebenfalls muss myhost.tld auf den gewünschten Wert (hier die Domain, auf die getestet werden soll) angepasst werden.

Interessant ist auch die Option -I, die einen HEAD-Request ausführt, um z.B. HTTP-Statuscodes und daraus folgende Umleitungen einsehen zu können:

curl -I -H "Host: myhost.tld" 172.16.1.1

Keine Kommentare

Kommentar verfassen