HTTP-Max-Forwards-Header

Typ

Der Max-Forwards-Header ist ein Request-Header, der die maximale Anzahl von Proxy-Hops für TRACE- und OPTIONS-Requests limitiert.

Syntax

Der Header enthält einen nicht-negativen Integer-Wert, der bei jedem Proxy-Hop dekrementiert wird.

http
Max-Forwards: 10
Max-Forwards: 0

Direktiven

Der Max-Forwards-Header akzeptiert einen Integer-Wert, der die verbleibenden Proxy-Hops angibt, und wird nur bei TRACE- und OPTIONS-Methoden ausgewertet.

max-forwards-value
Ein nicht-negativer Integer (0 oder größer), der die maximale Anzahl verbleibender Proxy-Hops angibt.
decrement-behavior
Jeder Proxy dekrementiert den Wert um 1; bei 0 wird die Anfrage nicht weitergeleitet.

Beispiele

Die folgenden Beispiele zeigen typische Anwendungsfälle für Proxy-Chain-Debugging, Loop-Prevention und TRACE-Requests in API-Gateways.

TRACE-Request mit Max-Forwards

Ein Client sendet einen TRACE-Request mit Max-Forwards-Limit, um die Proxy-Kette zu debuggen.

http
TRACE /api/v1/debug HTTP/1.1
Host: api.example.com
Max-Forwards: 3

Proxy-1-Verarbeitung (Max-Forwards: 3 → 2):

http
TRACE /api/v1/debug HTTP/1.1
Host: api.example.com
Max-Forwards: 2
Via: 1.1 proxy-1.example.com

Proxy-2-Verarbeitung (Max-Forwards: 2 → 1):

http
TRACE /api/v1/debug HTTP/1.1
Host: api.example.com
Max-Forwards: 1
Via: 1.1 proxy-1.example.com, 1.1 proxy-2.example.com

Proxy-3-Verarbeitung (Max-Forwards: 1 → 0, stoppt hier):

http
HTTP/1.1 200 OK
Content-Type: message/http
Via: 1.1 proxy-1.example.com, 1.1 proxy-2.example.com, 1.1 proxy-3.example.com

TRACE /api/v1/debug HTTP/1.1
Host: api.example.com
Max-Forwards: 0
Via: 1.1 proxy-1.example.com, 1.1 proxy-2.example.com

OPTIONS-Request mit Hop-Limit

Ein Client prüft API-Capabilities mit OPTIONS und limitiert Proxy-Hops.

http
OPTIONS /api/v1/products HTTP/1.1
Host: api.example.com
Max-Forwards: 5

Response vom nächsten Proxy (Max-Forwards: 0):

http
HTTP/1.1 200 OK
Allow: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Via: 1.1 cdn.example.com, 1.1 lb.example.com, 1.1 gateway.example.com

Proxy-Loop-Detection

Ein Client setzt Max-Forwards auf niedrigen Wert, um Proxy-Loops zu erkennen.

http
TRACE / HTTP/1.1
Host: api.example.com
Max-Forwards: 0

Response vom ersten Proxy (stoppt sofort):

http
HTTP/1.1 200 OK
Content-Type: message/http
Via: 1.1 proxy-entry.example.com

TRACE / HTTP/1.1
Host: api.example.com
Max-Forwards: 0

Max-Forwards-Decrement-Flow

Der Max-Forwards-Header wird bei jedem Proxy-Hop dekrementiert und stoppt die Request-Weiterleitung bei Wert 0.

plantuml
@startuml
!theme plain
skinparam BoxPadding 20
skinparam ParticipantPadding 20

participant "Client" as client
participant "Proxy 1\n(CDN)" as proxy1
participant "Proxy 2\n(Load Balancer)" as proxy2
participant "Proxy 3\n(API Gateway)" as proxy3
participant "Origin\nServer" as origin

client -> proxy1: TRACE /api/debug\nMax-Forwards: 3

proxy1 -> proxy1: Check Max-Forwards: 3\nDecrement: 3 - 1 = 2\nAdd Via-Header

proxy1 -> proxy2: TRACE /api/debug\nMax-Forwards: 2\nVia: 1.1 cdn.example.com

proxy2 -> proxy2: Check Max-Forwards: 2\nDecrement: 2 - 1 = 1\nAdd Via-Header

proxy2 -> proxy3: TRACE /api/debug\nMax-Forwards: 1\nVia: 1.1 cdn.example.com,\n     1.1 lb.example.com

proxy3 -> proxy3: Check Max-Forwards: 1\nDecrement: 1 - 1 = 0\nSTOP HERE

proxy3 --> proxy2: 200 OK\nVia: 1.1 cdn, 1.1 lb, 1.1 gateway\n[TRACE message with full chain]

proxy2 --> proxy1: 200 OK

proxy1 --> client: 200 OK\nVia: 1.1 cdn, 1.1 lb, 1.1 gateway\n[TRACE response shows 3-hop chain]

note over client: Client sieht:\n3 Proxy-Hops\nin Via-Header

== Alternative: Max-Forwards: 10 (erreicht Origin) ==

client -> proxy1: TRACE /api/debug\nMax-Forwards: 10

proxy1 -> proxy2: Max-Forwards: 9
proxy2 -> proxy3: Max-Forwards: 8
proxy3 -> origin: Max-Forwards: 7

origin --> proxy3: 200 OK\n[Full TRACE response]
proxy3 --> proxy2: 200 OK
proxy2 --> proxy1: 200 OK
proxy1 --> client: 200 OK\nVia: cdn, lb, gateway\n[Complete proxy chain visible]
@enduml

Vorteile für die Systemarchitektur

  • Proxy-Loop-Prevention durch Hop-Limit-Mechanismus
  • Proxy-Chain-Debugging mit TRACE-Methode
  • Security-Feature: Limitiert TRACE-Requests auf bestimmte Hops
  • OPTIONS-Request-Kontrolle in Multi-Proxy-Architekturen
  • Kombinierbar mit Via-Header für vollständige Chain-Visibility

Spezifikation

RFC 9110 (HTTP Semantics) definiert den Max-Forwards-Header als Request-Header für Hop-Limitierung bei TRACE- und OPTIONS-Methoden.

Weitere Spezifikationen

OPTIONS Method, TRACE Method