HTTP Transfer-Encoding Header

Der HTTP-Header Transfer-Encoding ist ein Response-Header, der die Kodierungsmethode für die Übertragung des Response-Body definiert. Chunked-Encoding ermöglicht Streaming ohne vorherige Content-Length, Kompression reduziert Bandbreite.

Typ

Response-Header

Syntax

Der Header listet angewendete Transfer-Encodings in Anwendungsreihenfolge.

http
Transfer-Encoding: chunked
Transfer-Encoding: gzip, chunked

Direktiven

Die Direktiven definieren Transfer-Encoding-Methoden.

chunked
Response-Body wird in Chunks übertragen, jeder Chunk mit Größenangabe. Letzte Direktive in der Liste, ermöglicht Streaming ohne bekannte Content-Length.
gzip
Response-Body ist gzip-komprimiert, Client muss dekomprimieren.
deflate
Response-Body ist deflate-komprimiert, weniger gebräuchlich als gzip.
compress
Veraltete compress-Kodierung, nicht mehr empfohlen.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den Transfer-Encoding-Header.

Beispiel 1 Chunked Streaming

http
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked

1a\r\n
{"status": "processing"}\r\n
18\r\n
{"status": "complete"}\r\n
0\r\n
\r\n

API streamt JSON-Responses in Chunks für Live-Updates ohne vorherige Gesamtlänge.

Beispiel 2 Gzip und Chunked

http
HTTP/1.1 200 OK
Content-Type: text/html
Transfer-Encoding: gzip, chunked

[Hex-Size]\r\n
[Gzip-komprimierte Daten]\r\n
[Hex-Size]\r\n
[Gzip-komprimierte Daten]\r\n
0\r\n
\r\n

Webserver komprimiert HTML mit gzip und überträgt in Chunks für optimale Bandbreite bei Streaming.

Beispiel 3 Server-Sent Events

http
HTTP/1.1 200 OK
Content-Type: text/event-stream
Transfer-Encoding: chunked
Cache-Control: no-cache

14\r\n
data: {"time": 1000}\r\n
\r\n
14\r\n
data: {"time": 2000}\r\n
\r\n

SSE-Endpoint verwendet Chunked-Encoding für kontinuierliche Event-Streams ohne Connection-Close.

Chunked Encoding Flow

Chunked Transfer-Encoding Ablauf

Vorteile für die Systemarchitektur

  • Streaming ohne Buffering: Server kann Response senden ohne vollständigen Body im Memory zu halten
  • Reduzierte Latenz: Client empfängt erste Chunks sofort, parst während Übertragung
  • Effiziente Bandbreite: Kompression mit gzip/deflate reduziert übertragene Datenmenge signifikant

Spezifikation

RFC 9112, Section 6.1 – HTTP/1.1 Transfer Codings https://www.rfc-editor.org/rfc/rfc9112.html#name-transfer-codings

Weitere Spezifikationen

Content-Length Header, Content-Encoding Header, TE Header