HTTP/HTTPS

Hypertext Transfer Protocol – die Grundlage des World Wide Web

HTTP/HTTPS

HTTP (Hypertext Transfer Protocol) ist das Protokoll, das das World Wide Web antreibt. Es definiert, wie Webbrowser und Webserver miteinander kommunizieren. HTTPS ist die sichere Version mit Verschlüsselung.

RFC 2616 HTTP/2 HTTP/3 HTTPS Statuscodes

1. Was ist HTTP?

Grundprinzip

HTTP ist ein Request-Response-Protokoll: Der Client (z.B. Browser) sendet eine Anfrage an den Server, der Server antwortet.

Standard: IETF (Internet Engineering Task Force)

RFCs: 1945 (HTTP/1.0), 2616 (HTTP/1.1), 7230-7235, 7540 (HTTP/2), 9114 (HTTP/3)

Port: 80 (HTTP), 443 (HTTPS)

Eigenschaften

  • Zustandslos: Jede Anfrage ist unabhängig
  • Textbasiert: Menschenlesbar
  • Erweiterbar: Header, Methoden, Statuscodes
  • Client-Server: Klare Trennung

Komponenten

  • Methoden: GET, POST, PUT, DELETE...
  • Header: Metadaten (Content-Type, User-Agent)
  • Statuscodes: 200 OK, 404 Not Found...
  • Body: Übertragene Daten (HTML, JSON)

2. Geschichte von HTTP

1989 - HTTP/0.9

Tim Berners-Lee entwickelt am CERN das erste HTTP. Nur GET-Methode, keine Header, nur HTML.

1996 - HTTP/1.0 (RFC 1945)

Erste standardisierte Version. Einführung von Header, Statuscodes und verschiedenen Medientypen.

1999 - HTTP/1.1 (RFC 2616)

Wichtigste Verbesserungen: Persistente Verbindungen (Keep-Alive), Pipelining, Host-Header (für mehrere Domains auf einer IP).

2015 - HTTP/2 (RFC 7540)

Auf SPDY basierend. Multiplexing, Header-Komprimierung, Server Push, binäres Protokoll.

2022 - HTTP/3 (RFC 9114)

Basierend auf QUIC (UDP statt TCP). Schnellerer Verbindungsaufbau, bessere Fehlerkorrektur, keine Head-of-Line-Blocking-Probleme.

3. HTTP-Versionen im Vergleich

HTTP/1.1
  • Textbasiert
  • Keep-Alive-Verbindungen
  • Pipelining (selten genutzt)
  • Host-Header für virtuelle Hosts
  • Chunked Transfer Encoding
HTTP/2
  • Binäres Protokoll
  • Multiplexing (mehrere Streams parallel)
  • Header-Komprimierung (HPACK)
  • Server Push
  • Priorisierung von Streams
HTTP/3
  • Basiert auf QUIC (UDP)
  • 0-RTT-Verbindungsaufbau
  • Integrierte Verschlüsselung
  • Kein Head-of-Line-Blocking
  • Bessere Mobilität (Connection Migration)

4. HTTP-Methoden (Verben)

Die wichtigsten HTTP-Methoden für die Kommunikation mit Ressourcen:

GET

Fordert eine Ressource an. Sicher und idempotent. Kein Request-Body. Wird zum Abrufen von Webseiten, Bildern, JSON-Daten verwendet.

GET
POST

Sendet Daten an den Server (z.B. Formulare). Nicht idempotent. Erzeugt neue Ressourcen oder führt Aktionen aus.

POST
PUT

Ersetzt eine Ressource vollständig. Idempotent. Wird zum Aktualisieren von Ressourcen verwendet.

PUT
DELETE

Löscht eine Ressource. Idempotent.

DELETE
PATCH

Führt partielle Änderungen an einer Ressource durch. Nicht unbedingt idempotent.

HEAD

Wie GET, aber ohne Body. Nur Header werden übertragen.

OPTIONS

Fragt die unterstützten Methoden einer Ressource ab.

CONNECT

Stellt einen Tunnel her (z.B. für HTTPS über Proxy).

5. HTTP-Statuscodes

Dreistellige Codes, die das Ergebnis einer Anfrage anzeigen:

Code Kategorie Beschreibung Beispiele
1xxInformativDie Anfrage wird noch verarbeitet100 Continue, 101 Switching Protocols
200ErfolgOK – die Anfrage war erfolgreichStandardantwort für GET
201ErfolgCreated – Ressource wurde erstelltNach erfolgreichem POST/PUT
204ErfolgNo Content – erfolgreich, aber keine AntwortdatenNach DELETE
301UmleitungMoved Permanently – Ressource hat neue URLDauerhafte Weiterleitung
302UmleitungFound (früher Moved Temporarily)Temporäre Weiterleitung
304UmleitungNot Modified – Cache-Inhalt noch gültigFür Conditional GET
400Client-FehlerBad Request – fehlerhafte AnfrageSyntaxfehler, ungültige Parameter
401Client-FehlerUnauthorized – Authentifizierung erforderlichLogin erforderlich
403Client-FehlerForbidden – kein ZugriffAuthentifiziert, aber keine Berechtigung
404Client-FehlerNot Found – Ressource nicht gefundenBekanntester Statuscode
429Client-FehlerToo Many Requests – Rate-Limit erreichtZu viele Anfragen in kurzer Zeit
500Server-FehlerInternal Server Error – allgemeiner ServerfehlerProgrammfehler auf dem Server
502Server-FehlerBad Gateway – falsche Antwort von upstreamProxy/Reverse-Proxy-Problem
503Server-FehlerService Unavailable – Server überlastetWartungsarbeiten, zu viele Anfragen
504Server-FehlerGateway Timeout – ZeitüberschreitungUpstream antwortet nicht

6. Wichtige HTTP-Header

Header übertragen zusätzliche Metainformationen zwischen Client und Server:

Header Typ Beschreibung Beispiel
HostRequestDomain-Name des Servers (erforderlich für virtuelle Hosts)Host: example.com
User-AgentRequestIdentifikation des Clients (Browser, Bot)User-Agent: Mozilla/5.0...
AcceptRequestAkzeptierte MedientypenAccept: text/html, application/json
Accept-LanguageRequestBevorzugte SprachenAccept-Language: de-DE, en
AuthorizationRequestAuthentifizierungsdaten (Basic, Bearer)Authorization: Basic dXNlcjpwYXNz
CookieRequestGespeicherte Cookies vom ClientCookie: sessionId=abc123
Set-CookieResponseSetzt einen Cookie beim ClientSet-Cookie: sessionId=abc123; HttpOnly
Content-TypeBeideMedientyp des Inhalts (MIME-Type)Content-Type: application/json
Content-LengthBeideLänge des Inhalts in BytesContent-Length: 348
Cache-ControlBeideCaching-AnweisungenCache-Control: max-age=3600
Last-ModifiedResponseDatum der letzten ÄnderungLast-Modified: Mon, 15 Jan 2024 12:00:00 GMT
ETagResponseEindeutiger Identifikator für VersionETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
If-Modified-SinceRequestBedingte Anfrage (Caching)If-Modified-Since: Mon, 15 Jan 2024 12:00:00 GMT
If-None-MatchRequestBedingte Anfrage (ETag)If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"
LocationResponseWeiterleitungsziel (3xx)Location: /neue-seite.html

7. HTTP-Request und Response (Beispiel)

HTTP-Request (GET)

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
Accept-Language: de-DE,de;q=0.9
Connection: keep-alive
Upgrade-Insecure-Requests: 1

HTTP-Response (200 OK)

HTTP/1.1 200 OK
Date: Mon, 15 Jan 2024 14:30:00 GMT
Server: Apache/2.4.41
Last-Modified: Mon, 15 Jan 2024 12:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1245
Connection: keep-alive

<!DOCTYPE html>
<html>
<head>
  <title>Beispiel</title>
</head>
<body>
  <h1>Hallo Welt!</h1>
</body>
</html>

8. HTTPS – Verschlüsseltes HTTP

Was ist HTTPS?

HTTPS (Hypertext Transfer Protocol Secure) ist HTTP mit Verschlüsselung durch TLS (Transport Layer Security) oder SSL.

Port: 443

Vorteile:

  • Vertraulichkeit – Daten sind verschlüsselt
  • Integrität – Daten können nicht manipuliert werden
  • Authentizität – der Server ist echt (Zertifikat)

TLS-Handshake

  1. Client hello (unterstützte Ciphers)
  2. Server hello (gewählter Cipher, Zertifikat)
  3. Client verifiziert Zertifikat
  4. Schlüsselaustausch (RSA, ECDHE)
  5. Verschlüsselte Kommunikation beginnt

HSTS

HTTP Strict Transport Security zwingt Browser, nur über HTTPS zu kommunizieren.

Header: Strict-Transport-Security: max-age=31536000; includeSubDomains

Schützt vor SSL-Stripping-Angriffen.

Praxisaufgabe: HTTP verstehen

Beantworten Sie folgende Fragen:

  1. Welche HTTP-Methode würden Sie für das Absenden eines Formulars verwenden?
  2. Welcher Statuscode wird bei einem erfolgreichen POST zurückgegeben?
  3. Was ist der Unterschied zwischen PUT und POST?
  4. Welcher Header teilt dem Browser mit, dass die Antwort JSON enthält?
  5. Warum ist HTTP/3 schneller als HTTP/2?

Verwandte Standards

HTTPS / TLS

Verschlüsselung und Zertifikate – die Sicherheitsschicht über HTTP.

Zu HTTPS
HTML

Die Auszeichnungssprache für Webseiten.

Zu HTML
JSON

Datenaustauschformat für APIs.

Zu JSON