Response-Header anzeigen

Geben Sie eine Adresse ein und lesen Sie, was der Server sagt, bevor er die Seite schickt: die Statuszeile und jeden Header, für jede Weiterleitung auf dem Weg. Eine kurze Notiz neben jedem Header erklärt, was er dort tut.

Jede öffentliche http://- oder https://-Adresse. Ohne Schema wird HTTPS verwendet.

Oder probieren Sie github.com, wikipedia.org

Der Teil einer Webseite, den Sie nie sehen

Eine Antwort eines Webservers ist aufgebaut wie ein Paket. Die Seite ist der Inhalt des Kartons. Außen klebt ein Etikett: eine erste Zeile mit einem dreistelligen Statuscode, danach eine Liste von Name: value-Zeilen, den sogenannten Headern. Der Browser liest zuerst das Etikett und entscheidet danach fast alles: anzeigen oder herunterladen, eine Kopie behalten oder nicht, woanders hingehen, welche Cookies er speichert.

Header sieht man nie auf dem Bildschirm, deshalb versteckt sich darin viel rätselhaftes Verhalten. Eine Seite, die sich nicht aktualisiert, eine Weiterleitung in der Endlosschleife, eine Schrift, die auf einer anderen Domain blockiert wird, ein Login, der nicht hält. Meistens steckt ein einziger Header mit dem falschen Wert dahinter.

Was dieses Tool macht

Unser Server schickt eine GET-Anfrage an die eingegebene Adresse, dieselbe Art, die ein Browser schickt, und zeichnet die Antwort auf. Ist die Antwort eine Weiterleitung (ein 3xx-Status mit Location-Header), ruft er die neue Adresse ab und zeichnet auch diese auf, bis zu achtmal. Sie erhalten einen Block pro Antwort, der Reihe nach, und sehen so, welcher Server bei welchem Schritt welchen Header hinzugefügt hat.

Jeder Header wird in einem Verzeichnis mit mehr als 130 Namen nachgeschlagen und mit seiner Familie und einer Erklärung in einem Satz angezeigt. Die Familien sind:

FamilieTypische HeaderWelche Frage sie beantworten
CachingCache-Control, ETag, Age, X-CacheDarf das gespeichert werden, wie lange, und hat ein Cache geantwortet?
InhaltContent-Type, Content-Encoding, Content-LengthWas steckt im Body und wie ist er verpackt?
SicherheitStrict-Transport-Security, Content-Security-PolicyWelche Schutzmechanismen des Browsers sind eingeschaltet?
CookiesSet-CookieWas soll sich der Browser merken?
Cross-OriginAccess-Control-Allow-OriginDürfen Skripte anderer Websites das lesen?
VerbindungAlt-Svc, Date, Keep-AliveWie wird die Verbindung zum Server verwaltet?
Server und CDNServer, Via, CF-RAY, X-Served-ByWelche Software und welches Netz hat geantwortet?
DiagnoseServer-Timing, X-Request-IdWie lange hat es gedauert, und wie findet man es in den Logs?

Ein Name, der nicht im Verzeichnis steht, wird als eigener oder seltener Header markiert. Jede Software darf eigene erfinden, Sie werden diese Markierung also oft sehen, und sie ist harmlos. Zeitangaben und Größen werden umgerechnet, wo es hilft: max-age=31536000 wird als 365 Tage angezeigt.

Die Zusammenfassung zeigt den endgültigen Status, die HTTP-Version, die unser Server ausgehandelt hat, die Anzahl der Weiterleitungen, die im Server-Header genannte Software und die Anzahl der Header in der letzten Antwort. Hier wird nichts benotet. Wenn Sie eine Note wollen, liefert die Bewertung der Security-Header eine.

Die Statuszeile lesen

  • 2xx: Die Anfrage war erfolgreich. 200 ist der Normalfall.
  • 301 und 308: dauerhaft umgezogen. Browser und Suchmaschinen merken sich die neue Adresse. 302, 303 und 307: vorerst dorthin gehen, die ursprüngliche Adresse bleibt die Referenz.
  • 4xx: Der Server verweigert oder findet nicht, was angefragt wurde. Ein 403 auf einer Seite, die sich in Ihrem Browser problemlos öffnet, bedeutet oft, dass die Website automatisierte Anfragen blockiert.
  • 5xx: Der Server selbst ist gescheitert. Die Codes 520 bis 526 stammen von einem CDN, das den Server dahinter nicht erreicht hat.

Vier Dinge, die man damit prüft

„Warum bekommen Besucher noch die alte Version?“
Lesen Sie Cache-Control und Age. Ein langes max-age auf einer HTML-Seite heißt, dass Browser erst wieder fragen, wenn es abgelaufen ist. Ein X-Cache oder CF-Cache-Status mit HIT heißt, dass das CDN seine eigene Kopie ausgeliefert hat und geleert werden muss.
„Ist die Komprimierung an?“
Suchen Sie nach Content-Encoding: br, gzip oder zstd. Fehlt der Header auf einer HTML-Seite, wird die Seite in voller Größe übertragen.
„Woher kommt diese Weiterleitung?“
Vergleichen Sie den Server-Header jedes Schritts. Eine Weiterleitung, die das CDN beantwortet, wurde in dessen Dashboard eingerichtet. Eine, die nginx oder Apache beantwortet, steht in der Serverkonfiguration. Eine mit X-Redirect-By nennt die Anwendung oder das Plugin, das sie ausgelöst hat.
„Was läuft auf dieser Website?“
Server, X-Powered-By und Via nennen oft den Webserver, die Sprache und das CDN. Auf Ihrer eigenen Website lohnt es sich, die Versionsnummern aus diesen Headern zu entfernen.

Sie sehen die Header, die unser Server für eine einzelne anonyme Anfrage erhalten hat. Eine Website kann einem angemeldeten Besucher, einem mobilen Browser, einem anderen Land oder einer anderen Accept-Language anders antworten. Header-Namen werden in ihrer üblichen Schreibweise gezeigt. HTTP/2 und HTTP/3 übertragen sie kleingeschrieben, wie im Rohblock, und die Groß- und Kleinschreibung spielt nie eine Rolle.

Häufige Fragen

Wie sehe ich die Response-Header in meinem eigenen Browser?

Öffnen Sie die Entwicklertools (F12, oder Cmd+Option+I auf dem Mac), wechseln Sie zum Tab „Netzwerk“, laden Sie die Seite neu und klicken Sie auf die erste Anfrage. Der Bereich „Header“ zeigt dieselben Zeilen. Dieses Tool ist für die Fälle, in denen das nicht geht: auf dem Handy, bei einem Link, den Sie lieber nicht öffnen, oder um die Antwort an einen Client ohne Cookies zu sehen.

Was ist der Unterschied zwischen Request-Headern und Response-Headern?

Request-Header gehen mit der Frage des Browsers hinaus: welche Seite, welche Sprachen und Formate er akzeptiert, welche Cookies er hat. Response-Header kommen mit der Antwort vom Server zurück. Diese Seite zeigt nur Response-Header.

Sind die X-Header Standard?

Das Präfix X- war eine Konvention für inoffizielle Header. Einige wurden trotzdem allgegenwärtig, etwa X-Frame-Options und X-Content-Type-Options. Die Konvention wurde 2012 aufgegeben, deshalb haben neuere eigene Header oft gar kein Präfix.

Warum bekomme ich andere Header als die, die mein Browser zeigt?

Weil es nicht dieselbe Anfrage ist. Server und CDNs passen sich an User-Agent, Cookies, Sprache und Standort des Clients an, und eine Kopie aus dem Cache kann Header tragen, die Stunden vorher erzeugt wurden. Der Vary-Header listet auf, welche Request-Header der Server berücksichtigt.

Sollte ich die Header Server und X-Powered-By verstecken?

Den Produktnamen zu verstecken bringt wenig. Die Versionsnummern zu entfernen lohnt die zwei Minuten aber, denn automatische Scanner wählen danach aus, welche bekannten Lücken sie ausprobieren. In nginx mit server_tokens off;, in Apache mit ServerTokens Prod, in PHP mit expose_php = Off.

Bedeutet ein fehlender Header, dass etwas nicht stimmt?

Meistens nicht. Content-Type ist der einzige, der bei fast jeder Antwort mit Body erwartet wird. Die anderen sind wichtig, je nachdem, was Sie wollen. Ohne Cache-Control bleibt das Caching der Schätzung jedes Browsers überlassen, und ohne Security-Header bleiben die optionalen Schutzmechanismen aus.