Wenn du eine Webseite besuchst, stellt dein Browser im Hintergrund Dutzende oder Hunderte von Anfragen an den Server. Der Server antwortet auf diese Anfragen, indem er alle Daten und Dateien liefert, die die Webseite zum Laden benötigt. Der eigentliche Prozess ist jedoch viel komplexer als das.

Wenn du die Leistung deiner Webseite steigern willst, ist es wichtig zu verstehen, wie HTTP-Anfragen funktionieren. Einige dieser Optimierungsmaßnahmen beinhalten das Minimieren und Komprimieren von Anfragen. Im Grunde optimierst du deinen Server so, dass er besser auf HTTP-Anfragen reagiert.

Schau dir unseren Video-Leitfaden für HTTP-Requests an

In diesem Artikel werden wir uns genauer ansehen, wie HTTP-Anfragen funktionieren. Außerdem zeigen wir dir, wie HTTP-Anfragen aufgebaut sind und wie du sie bei Bedarf beheben kannst. Auf geht’s an die Arbeit!

Was ist HTTP?

HTTP ist ein Protokoll. Das Akronym steht für HyperText Transfer Protocol. Dieses Protokoll regelt die Struktur und Sprache der Anfragen und Antworten, die zwischen Clients und Servern stattfinden. Bei den Clients handelt es sich in der Regel um Webbrowser, aber sie können in vielen Formen auftreten, z. B. als Suchmaschinenroboter.

Wenn du Webseiten über einen Browser besuchst, findet die gesamte Verbindung über HTTP statt. Das Protokoll ermöglicht es dir, Daten wie Text, Bilder, Videos, Stylesheets, Skripte und mehr zu empfangen.

HTTP ist seit den frühen 90er Jahren eines der Rückgrate des Internets. In den letzten Jahrzehnten hat es sich weiterentwickelt und ist effizienter geworden. In der zweiten Hälfte der 2010er Jahre wurde HTTP/2 entwickelt, das es den Clients ermöglicht, Ressourcen gleichzeitig statt asynchron zu laden. Dies führt zu einer massiven Leistungssteigerung.

Im Jahr 2022 werden 46 Prozent des Webs HTTP/2 nutzen. Jetzt gibt es bereits Diskussionen über die Einführung von HTTP/3, das auch als HTTP-over-QUIC bekannt ist. HTTP/3 arbeitet mit dem UDP-Protokoll, was ihm einen Vorteil gegenüber herkömmlichen TCP-Verbindungen verschafft (die HTTP und HTTP/2 verwenden).

Was ist eine HTTP-Anfrage (und wie funktioniert sie)?

Stell dir eine HTTP-Anfrage so vor, dass dein Browser eine Verbindung zum Server herstellt und entweder eine bestimmte Ressource anfordert oder Daten an den Server sendet. Es gibt verschiedene Arten von HTTP-Anfragen, die die Art der Antwort, die du vom Server erhältst, völlig verändern. Die gängigsten davon sind:

  1. GET. Dies ist die mit Abstand am häufigsten verwendete HTTP-Anforderungsmethode. Eine GET-Anfrage fragt den Server nach einer bestimmten Information oder Ressource. Wenn du eine Webseite aufrufst, sendet dein Browser normalerweise mehrere GET-Anfragen, um die Daten zu erhalten, die er zum Laden der Seite benötigt.
  2. HEAD. Mit einer HEAD-Anfrage erhältst du nur die Kopfdaten der Seite, die du laden möchtest. Du kannst diese Art von HTTP-Anfrage verwenden, um die Größe eines Dokuments herauszufinden, bevor du es mit GET herunterlädst.
  3. POST. Dein Browser verwendet die HTTP-Anforderungsmethode POST, wenn er Daten an den Server senden muss. Wenn du zum Beispiel ein Kontaktformular auf einer Webseite ausfüllst und abschickst, verwendest du eine POST-Anfrage, damit der Server die Informationen erhält.
  4. PUT. PUT-Anfragen haben eine ähnliche Funktionalität wie die POST-Methode. Anstatt jedoch Daten zu übermitteln, verwendest du PUT-Anfragen, um Informationen zu aktualisieren, die bereits auf dem Endserver vorhanden sind.

Es gibt noch einige andere Arten von HTTP-Anfragen, die du verwenden kannst, z. B. die DELETE-, PATCH- und OPTIONS-Methoden. Im täglichen Gebrauch sind sie jedoch relativ unüblich.

Beim Absenden einer HTTP-Anfrage wird eine Nachricht in einem bestimmten Format an den empfangenden Server gesendet. Der Server sendet eine Antwort zurück und der Client ergreift die entsprechenden Maßnahmen. Er kann zum Beispiel Ressourcen laden oder dich auf eine andere Seite weiterleiten.

Wenn du einen HTTP-Fehler erhältst, liegt das normalerweise daran, dass der Server deine Anfrage nicht beantworten kann. Der Fehlercode, den du erhältst, sollte den Grund dafür erklären. Zu den häufigsten Ursachen für HTTP-Fehler gehört, dass keine Verbindung zum Server hergestellt werden kann und die angeforderten Ressourcen nicht gefunden werden.

Probiere unser HTTP-Header-Checker-Tool aus, um den Status einer beliebigen Seite zu überprüfen.

Eine Einführung in die Strukturen von HTTP-Anfragen und -Antworten

HTTP-Anfragen und -Antworten haben ähnliche Strukturen. Wenn du in der Lage sein willst, HTTP-Anfragen und -Antworten zu analysieren, um mögliche Fehler auf deiner Webseite zu erkennen, ist es wichtig, dass du diese Strukturen verstehst.

Im Allgemeinen sind HTTP-Anfragen in drei Abschnitte unterteilt. Schauen wir uns jeden dieser Abschnitte genauer an.

HTTP-Anfragezeile

Jede HTTP-Anfrage beginnt mit einer Zeile, die angibt, welche Art von Methode du verwendest und welche Version des HTTP-Protokolls. Der Anfang einer HTTP-GET-Anfrage könnte zum Beispiel so aussehen:

GET /XXX HTTP/1.1

In diesem Fall steht das Zeichen „XXX“ nach der GET-Methode für die Datei, die du erhalten möchtest.

Der Anfang einer HTTP-Antwort gibt die Version des Protokolls an, die beide Parteien verwenden. Er enthält auch einen HTTP-Code, der dem Status der Antwort entspricht.

Wenn du eine Webseite besuchst und sie erfolgreich geladen wird, siehst du eine 2XX HTTP-Erfolgsmeldung:

HTTP/1.1 200 OK

In diesem Teil der HTTP-Antwort werden Fehlercodes angezeigt, wenn die Ressource aus irgendeinem Grund nicht geladen werden kann. Wenn der Server die Seite nicht finden kann, siehst du einen Antwort-Header wie diesen:

HTTP/1.1 400 OK

Wenn du dich mit Anfragemethoden und HTTP-Statuscodes auskennst, verrät dir die Startzeile genau, welche Art von Transaktion zwischen dem Client und dem Server stattfindet. Insgesamt ist dies der am einfachsten zu verstehende Teil der Anfrage.

Anfrage-Header

Die Anfrage-Header kommen direkt nach den Anfragezeilen und liefern zusätzliche Informationen über die Transaktion. Der Header enthält Informationen über den Host, die Webserver-Software, die der Endkunde verwendet, den User Agent des Kunden und vieles mehr.

So sieht ein HTTP-Anfrage-Header aus:

Host: website.com

User-Agent: Chrome/5.0 (Windows 10)

Accept-Language: en-US

Accept-Encoding: gzip, deflate

Connection: keep-alive</code.

Das sind nur einige Beispiele für die HTTP-Header-Parameter, die du verwenden kannst. Hier steht, was jede Zeile in diesem Header bedeutet:

  • Host: Das ist die IP oder URL des Servers, an den du die Anfrage stellst.
  • Benutzer-Agent: Dieser Parameter enthält Informationen über den Client und sein Betriebssystem (OS). In der Regel handelt es sich dabei um den von dir verwendeten Browser und dessen Version.
  • Accept-language: Diese Zeile teilt dem Server mit, welche Sprache der Kunde bevorzugt, falls es mehrere Versionen der angeforderten Datei gibt.
  • Accept-encoding: Diese Zeile gibt die Art der Kodierung oder Komprimierung an, die der Client verarbeiten kann.
  • Verbindung: Dieser Parameter teilt dem Server mit, ob er die Verbindung aufrechterhalten oder eine Zeitüberschreitung festlegen soll. Wenn die Verbindung unterbrochen wird, bevor die Anfrage abgeschlossen ist, erhältst du eine Fehlermeldung.

Fügen wir die Anfragezeile und die Header zusammen, um eine Vorstellung von der Gesamtstruktur zu bekommen, die du verwenden musst:

GET /XXX HTTP/1.1

Host: website.com

User-Agent: Chrome/5.0 (Windows 10)

Accept-Language: en-US

Accept-Encoding: gzip, deflate

Connection: keep-alive</code.

Im obigen Beispiel stellst du eine GET-Anfrage an den website.com-Host für eine bestimmte Ressource. Sehen wir uns nun an, wie der Header in der Antwort aussehen könnte:

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2022 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Last-Modified: Wed, 22 Jul 2022 19:15:56 GMT

Content-Length: 88

Content-Type: text/html

Connection: Closed</code.

Die Kopfzeile der Antwort beginnt in der zweiten Zeile und enthält das Datum der Verbindung und Informationen darüber, welchen Webserver und welches Betriebssystem der Host verwendet. Wenn du eine Datei anforderst, enthält der Header auch Informationen über das Datum der letzten Änderung, die Länge der Datei und die Art des Inhalts. In der letzten Zeile wird dir mitgeteilt, dass die Verbindung geschlossen wurde, da die Anfrage abgeschlossen ist.

Die Informationen und Parameter in den Kopfzeilen können je nach Art deiner Anfrage variieren. Die allgemeine Struktur bleibt jedoch gleich.

HTTP Nachrichtentext

Der Nachrichtentext ist der einfachste Teil einer HTTP-Anfrage. Er enthält die Daten, die du entweder sendest oder empfängst, je nachdem, welche Anfragemethode du verwendest.

Wenn du eine HTML-Datei mit der GET-Methode anforderst, könntest du eine Antwort erhalten, die wie folgt aufgebaut ist:

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2022 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Last-Modified: Wed, 22 Jul 2022 19:15:56 GMT

Content-Length: 88

Content-Type: text/html

Connection: Closed

<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”></code.

Der Rest der Datei steht hier

Der Body einer HTTP-Anfrage oder -Antwort wird durch eine einzelne Leerzeile vom Header getrennt. Um Verwirrung zu vermeiden, haben wir im obigen Beispiel keine vollständige HTML-Datei angegeben.

Wie man HTTP-Anfragen überwacht und Fehler behebt

Es gibt verschiedene Möglichkeiten, HTTP-Anfragen auf deiner Webseite zu überwachen, z. B. mit Hilfe von Application Performance Management (APM) Tools. Mit ihnen kannst du „Transaktionen“ auf deinen Webseiten überwachen, z. B. PHP-Aufgaben, HTTP-Fehler, Datenbankanfragen und mehr.

Als Kinsta-Benutzer hast du Zugang zu einem integrierten APM-Tool, das du über das MyKinsta-Dashboard aktivieren kannst. Mit dem Kinsta APM-Tool kannst du prüfen, welche Art von externen HTTP-Anfragen deine Webseite erhält und deren Status überwachen:

MyKinsta Dashboard
MyKinsta Dashboard

Außerdem kannst du damit wiederkehrende HTTP-Fehler überwachen, was bei der Fehlersuche auf deiner Webseite sehr hilfreich ist. Wenn du einen HTTP-Statusfehler auf deiner Webseite feststellst, kannst du die Kinsta APM aktivieren, den Fehler replizieren und die Details der Anfrage einsehen.

Das APM-Tool kann dir auch dabei helfen, DDoS-Angriffe zu erkennen, die durch eine Flut von HTTP-Anfragen relativ leicht zu erkennen sind. Wenn du weißt, ob es sich um einen DDoS-Angriff oder um eine Verkehrsspitze handelt, kannst du herausfinden, wie du mit der Situation umgehen musst.

Zusammenfassung

Wenn du verstehst, was HTTP-Anfragen sind und wie sie funktionieren, kannst du Probleme mit deiner Webseite leichter beheben. Wenn du auf HTTP-Fehler stößt, bedeutet das, dass der Server die Anfrage, die der Kunde gestellt hat, nicht beantworten konnte. Wenn du weißt, wie die Anfrage lautete und den Fehlercode in der HTTP-Antwort kennst, hast du mehr als genug Informationen, um das Problem zu beheben.

Um eine HTTP-Anfrage zu verstehen, musst du wissen, welche Methoden sie verwenden kann. Außerdem musst du wissen, wie HTTP-Anfragen und -Antworten strukturiert sind, und die verschiedenen HTTP-Statuscodes verstehen.

Wenn du das Anwendungs-, Datenbank– und Managed WordPress-Hosting von Kinsta nutzt, erhältst du automatisch Zugang zu einem APM-Tool, mit dem du die HTTP-Requests für deine Website überwachen kannst.

Melde dich noch heute bei Kinsta an und erhalte Zugang zu dieser wichtigen Funktion!