Hypertext Transfer Protocol (HTTP) is an application-layer protocol that enables clients such as web browsers and API consumers to request and receive resources from servers through stateless request-response exchanges over TCP (HTTP/1.1 and HTTP/2) or QUIC (HTTP/3). The protocol defines how clients send methods like GET or POST with headers and optional bodies, and how servers respond with status codes and content, with each request operating independently unless state is maintained through cookies or tokens. HTTP carries most web and API traffic, making its behavior critical to application performance, availability, and security, though plain HTTP lacks encryption and leaves content vulnerable to interception unless upgraded to HTTPS with TLS encryption.
So funktioniert HTTP
HTTP ist ein zustandsloses Anfrage- und Antwortprotokoll. Ein Client sendet eine Anfrage, in der eine Ressource und eine Aktion angegeben werden, und der Server gibt eine Antwort mit einem Statuscode und in der Regel auch mit Inhalten zurück.
- Auflösung des Hostnamens: Der Client verwendet DNS, um den Hostnamen in der URL in eine IP-Adresse umzuwandeln.
- Verbindung herstellen: Der Client öffnet eine TCP-Verbindung zum Server, standardmäßig auf Port 80. HTTP/3 verwendet stattdessen eine QUIC-Verbindung. Bei HTTPS folgt ein TLS-Handshake.
- Anfrage senden: Der Client sendet eine Methode wie GET oder POST, den Zielpfad, Header und optional einen Body.
- Anfrage verarbeiten: Der Server interpretiert die Methode und die Header und sucht oder generiert anschließend die angeforderte Ressource.
- Antwort zurückgeben: Der Server antwortet mit einem Statuscode wie 200 oder 404, Antwort-Headern und in der Regel einem Hauptteil. Der Client rendert dann den Inhalt oder übergibt die Daten an eine Anwendung.
Jede Anfrage ist unabhängig, daher behalten Server den Client-Status zwischen den Anfragen nicht bei, es sei denn, er wird durch Cookies oder Tokens übertragen. HTTP/2 und HTTP/3 bündeln mehrere Datenaustausche über eine Verbindung, wobei die gleiche Anfrage- und Antwortsemantik beibehalten wird.
Häufige HTTP-Probleme
Ein Browser meldet zu viele Weiterleitungen, wenn ein Server von HTTP auf HTTPS umleitet und ein Proxy oder Load Balancer die TLS-Verbindung beendet und unverschlüsseltes HTTP zurück an den Ursprungsserver weiterleitet. Der Ursprungsserver erkennt die Anfrage nie als sicher und leitet sie erneut weiter.
Clients erhalten 502- oder 504-Antworten, wenn ein Proxy oder Load Balancer keine zeitnahe Antwort vom Backend erhält. Häufige Ursachen sind nicht aufeinander abgestimmte Timeouts für die Leerlaufzeit, erschöpfte Backend-Verbindungen und eine langsame DNS-Auflösung im Upstream.
Benutzer sehen nach einer Bereitstellung alte Seiten oder API-Daten, da Cache-Header es Browsern oder Zwischencaches ermöglichen, Antworten wiederzuverwenden. Typische Ursachen sind zu lange „max-age“-Werte und fehlende Validatoren.
Eine über HTTPS bereitgestellte Seite, die Skripte oder Bilder über einfaches HTTP lädt, wird von Browsern teilweise blockiert, sodass Funktionen nicht funktionieren, während die Seite selbst geladen wird. Fest codierte HTTP-Links und fehlende Weiterleitungen sind die üblichen Ursachen.
Backend-Protokolle zeigen die Proxy-Adresse anstelle der tatsächlichen Client-Adresse an, wenn der Header „X-Forwarded-For“ nicht gesetzt, nicht vertrauenswürdig oder nicht geparst ist. Dies beeinträchtigt die Ratenbegrenzung, die Zugriffskontrolle und die Untersuchung von Vorfällen.