Skip to content

Das HTTP-Protokoll: Die "Kommunikationssprache" von Frontend und Backend

Kernfrage

Wie funktioniert HTTP? Das ist wie die Frage: Wie kommunizieren zwei Personen? Man braucht eine vereinbarte Sprache, Grammatik und Gesprächsregeln. HTTP ist das "Gesprächsprotokoll" zwischen Frontend und Backend.


0. Die Essenz von HTTP

HTTP (HyperText Transfer Protocol, Hypertext-Übertragungsprotokoll) ist das Basisprotokoll für die Kommunikation zwischen Frontend und Backend.

0.1 Analogie mit einem Gespräch

GesprächselementHTTP-EntsprechungBeschreibung
SpracheHTTP-ProtokollEine Sprache, die beide Seiten verstehen
GrammatikAnfrage-/AntwortformatWie man "spricht"
AblaufAnfrage-Antwort-ModusFrage und Antwort
BeendigungAuflegenTCP-Verbindung wird geschlossen

1. Die Entwicklung von HTTP

HTTP wurde 1991 eingeführt und hat seitdem mehrere bedeutende Upgrades durchlaufen.

🌐HTTP Protocol Demo
📤HTTP request
GET/api/users/123HTTP/1.1
Host:api.example.com
User-Agent:Mozilla/5.0
Accept:application/json
Authorization:Bearer xxx
TCP connection
📥HTTP response
HTTP/1.1200OK
Content-Type:application/json
Content-Length:156
Cache-Control:max-age=3600
{ "id": 123, "name": "Alice", "email": "alice@example.com" }

1.1 Versionsvergleich

VersionJahrKernverbesserungTypisches Merkmal
HTTP/0.91991Nur GET unterstütztNur Text, nur Anfragen, keine Response-Header
HTTP/1.01996POST/HEAD hinzugefügtJede Anfrage benötigt eine eigene TCP-Verbindung
HTTP/1.11997Persistente VerbindungenKeep-Alive, mehrere Anfragen über eine Verbindung
HTTP/22015MultiplexingBinäre Frames, Header-Kompression
HTTP/32022Basierend auf QUICUDP-Transport, löst Head-of-Line-Blocking

Warum braucht man HTTP/2?

HTTP/1.1 unterstützt zwar persistente Verbindungen, aber Anfragen müssen seriell gesendet werden (die nächste Anfrage kann erst gesendet werden, wenn die Antwort auf die vorherige vorliegt). HTTP/2 löst dieses Problem durch Multiplexing — mehrere Anfragen können gleichzeitig gesendet werden.


2. Die Struktur einer HTTP-Anfrage

2.1 Anfragezeile

http
GET /api/users/123 HTTP/1.1

Besteht aus drei Teilen:

  • Methode: GET, POST, PUT, DELETE usw.
  • URL: Der Ressourcenpfad der Anfrage
  • Version: HTTP/1.1 oder HTTP/2

2.2 Anfrage-Header

http
Host: api.example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer xxx
Content-Type: application/json
Content-Length: 45

Häufige Anfrage-Header:

HeaderBeschreibungBeispiel
HostServer-Domainnameapi.example.com
User-AgentClient-InformationenMozilla/5.0
AcceptAkzeptierter Antworttypapplication/json
AuthorizationAuthentifizierungsinformationenBearer token
Content-TypeAnfragetext-Typapplication/json

2.3 Anfragetext

json
{
  "name": "Max Müller",
  "email": "max@example.com"
}

Nur POST, PUT, PATCH und andere Methoden haben einen Anfragetext.


3. Die Struktur einer HTTP-Antwort

3.1 Statuszeile

http
HTTP/1.1 200 OK

Besteht aus drei Teilen:

  • Version: HTTP/1.1
  • Statuscode: 200, 404, 500 usw.
  • Statustext: OK, Not Found usw.

3.2 Antwort-Header

http
Content-Type: application/json
Content-Length: 156
Cache-Control: max-age=3600
Set-Cookie: session=xxx; HttpOnly

Häufige Antwort-Header:

HeaderBeschreibungBeispiel
Content-TypeAntworttext-Typapplication/json
Content-LengthAntworttext-Größe156
Cache-ControlCache-Strategiemax-age=3600
Set-CookieCookie setzensession=xxx

3.3 Antworttext

json
{
  "code": 0,
  "data": {
    "id": 123,
    "name": "Max Müller"
  }
}

4. HTTP-Methoden im Detail

MethodeZweckAnfragetextIdempotenzSicherheit
GETRessource abrufenKeinerJaJa
POSTRessource erstellenJaNeinNein
PUTVollständige AktualisierungJaJaNein
PATCHTeilaktualisierungJaNeinNein
DELETERessource löschenKeinerJaNein
HEADNur Header abrufenKeinerJaJa
OPTIONSUnterstützte Methoden abfragenKeinerJaJa

4.1 GET vs. POST

EigenschaftGETPOST
ParameterpositionURL-Query-ParameterAnfragetext
CachingCachebarStandardmäßig nicht cachebar
LesezeichenAls Lesezeichen speicherbarNicht speicherbar
VerlaufIm Browserverlauf gespeichertNicht gespeichert
DatenlängeBegrenzt (URL-Länge)Unbegrenzt
SicherheitParameter sichtbar in der URLParameter im Anfragetext

Wann GET/POST verwenden?

  • GET: Abfragen, Daten abrufen
  • POST: Erstellen, Daten übermitteln
  • PUT: Vollständige Aktualisierung (gesamte Ressource ersetzen)
  • PATCH: Teilaktualisierung (nur bestimmte Felder ändern)
  • DELETE: Ressource löschen

5. HTTP-Statuscodes

5.1 Statuscode-Kategorien

KategorieBeschreibungTypische Statuscodes
2xxErfolg200 OK, 201 Created, 204 No Content
3xxUmleitung301 Permanent, 302 Temporär, 304 Nicht geändert
4xxClient-Fehler400 Parameterfehler, 401 Nicht authentifiziert, 404 Nicht gefunden
5xxServer-Fehler500 Interner Fehler, 503 Nicht verfügbar

5.2 Häufige Statuscodes

StatuscodeBeschreibungVerwendungsszenario
200 OKAnfrage erfolgreichGET, PUT-Anfrage erfolgreich
201 CreatedErstelltPOST hat Ressource erfolgreich erstellt
204 No ContentKein InhaltDELETE erfolgreich durchgeführt
301 Moved PermanentlyPermanente UmleitungURL dauerhaft geändert
302 FoundTemporäre UmleitungURL vorübergehend geändert
304 Not ModifiedNicht geändertCache noch gültig
400 Bad RequestParameterfehlerAnfrageparameter im falschen Format
401 UnauthorizedNicht authentifiziertAnmeldung erforderlich
403 ForbiddenKeine BerechtigungAngemeldet, aber unzureichende Rechte
404 Not FoundNicht vorhandenRessource existiert nicht
500 Internal Server ErrorInterner FehlerServer-Ausnahme
503 Service UnavailableNicht verfügbarServer-Wartung oder Überlastung

6. HTTPS: Sicheres HTTP

6.1 HTTP vs. HTTPS

EigenschaftHTTPHTTPS
ProtokollTCPTCP + SSL/TLS
Port80443
DatenKlartextübertragungVerschlüsselte Übertragung
ZertifikatNicht erforderlichSSL-Zertifikat erforderlich
PerformanceEtwas schnellerEtwas langsamer (Handshake-Overhead)
SEOKein EinflussBevorzugt von Suchmaschinen indexiert

6.2 Der Ablauf von HTTPS

  1. Client Hello: Client sendet unterstützte Cipher Suites
  2. Server Hello: Server gibt Zertifikat und gewähltes Cipher Suite zurück
  3. Zertifikatsüberprüfung: Client verifiziert die Gültigkeit des Serverzertifikats
  4. Schlüsselaustausch: Asymmetrische Verschlüsselung zum Austausch des Session-Schlüssels
  5. Verschlüsselte Kommunikation: Symmetrische Verschlüsselung mit dem Session-Schlüssel

Vorteile von HTTPS

  • Abhöhschutz: Daten sind verschlüsselt, Dritte können sie nicht lesen
  • Manipulationsschutz: Datenintegritätsprüfung
  • Identitätsprüfung: SSL-Zertifikat verifiziert die Serveridentität

7. HTTP-Caching-Mechanismen

7.1 Cache-Header

HeaderBeschreibungBeispiel
Cache-ControlCache-Strategiemax-age=3600
ETagRessourcen-Versionsnummer"33a64df551425fcc"
Last-ModifiedLetzte ÄnderungWed, 21 Oct 2015 07:28:00 GMT

7.2 Cache-Strategien

Strong Cache:

http
Cache-Control: max-age=3600

Innerhalb von 3600 Sekunden verwendet der Browser direkt den Cache, ohne eine Anfrage zu senden.

Negotiated Cache:

http
ETag: "33a64df551425fcc"

Der Browser sendet If-None-Match, der Server gibt 304 (nicht geändert) oder 200 (geändert) zurück.


8. Häufige Fragen

8.1 Der wesentliche Unterschied zwischen GET und POST

Missverständnis: Der Unterschied zwischen GET und POST liegt nur in der Position der Parameter.

Die Wahrheit:

  • GET ist idempotent, mehrfache Anfragen liefern dasselbe Ergebnis
  • POST ist nicht idempotent, mehrfache Anfragen können mehrere Ressourcen erstellen
  • GET kann gecacht werden, POST standardmäßig nicht
  • GET kann als Lesezeichen gespeichert werden, POST nicht

8.2 Head-of-Line-Blocking bei HTTP/1.1

Problem: HTTP/1.1 unterstützt zwar persistente Verbindungen, aber Anfragen müssen seriell gesendet werden. Wenn die Antwort auf eine vorherige Anfrage langsam ist, müssen alle nachfolgenden Anfragen warten.

Lösungen:

  • HTTP/2 Multiplexing
  • Domain-Sharding (mehrere Domains für mehrere Verbindungen)
  • Connection-Pooling (Begrenzung der gleichzeitigen Verbindungen)

8.3 Die Vorteile von HTTP/2

EigenschaftHTTP/1.1HTTP/2
ÜbertragungsformatTextBinäre Frames
MultiplexingNicht unterstütztUnterstützt
Header-KompressionKeineHPACK-Algorithmus
Server-PushNicht unterstütztUnterstützt

Glossar

BegriffEnglischErklärung
HTTPHyperText Transfer ProtocolHypertext-Übertragungsprotokoll
HTTPSHTTP SecureHTTP + SSL/TLS
TCPTransmission Control ProtocolTransmissionssteuerungsprotokoll
SSL/TLSSecure Sockets LayerSecure Sockets Layer / Transport Layer Security
IdempotenzIdempotentMehrfache Anfragen liefern dasselbe Ergebnis
Persistente VerbindungKeep-AliveMehrere Anfragen über eine TCP-Verbindung
MultiplexingMultiplexingGleichzeitiges Senden mehrerer Anfragen
Head-of-Line-BlockingHead-of-Line BlockingVordere Anfragen blockieren hintere Anfragen