Forwarded header

Der HTTP Forwarded-Request-Header enthält Informationen, die möglicherweise von Reverse-Proxy-Servern (Load Balancer, CDNs usw.) hinzugefügt werden, die ansonsten verändert oder verloren gehen würden, wenn Proxy-Server in den Pfad der Anfrage eingebunden sind.

Wenn ein Client beispielsweise über einen HTTP-Proxy (oder Load Balancer) mit einem Webserver verbunden ist, werden Serverprotokolle nur die IP-Adresse, die Host-Adresse und das Protokoll des Proxys enthalten; dieser Header kann verwendet werden, um die IP-Adresse, den Host und das Protokoll der ursprünglichen Anfrage zu identifizieren. Der Header ist optional und kann von den Proxy-Servern auf dem Weg zum Server hinzugefügt, geändert oder entfernt werden.

Dieser Header wird zur Fehlerbehebung, Statistik und Generierung von standortabhängigem Inhalt verwendet. Aufgrund seines Designs gibt er datenschutzsensible Informationen preis, wie die IP-Adresse des Clients. Daher muss der Datenschutz des Benutzers berücksichtigt werden, wenn dieser Header verwendet wird.

Die alternativen und de-facto Standardversionen dieses Headers sind die Header X-Forwarded-For, X-Forwarded-Host und X-Forwarded-Proto.

Header-Typ Request-Header
Verbotener Request-Header Nein

Syntax

http
Forwarded: by=<identifier>;for=<identifier>;host=<host>;proto=<http|https>

Direktiven sind key=value Paare, die durch ein Semikolon getrennt sind.

Wenn es zwischen Client und Server mehrere Proxy-Server gibt, können diese jeweils ihre eigenen Weiterleitungsinformationen angeben. Dies kann durch das Hinzufügen eines neuen Forwarded-Headers am Ende des Header-Blocks oder durch das Anhängen der Informationen am Ende des letzten Forwarded-Headers in einer durch Kommas getrennten Liste erfolgen.

Direktiven

by Optional

Die Schnittstelle, über die die Anfrage am Proxy-Server einging. Der Bezeichner kann sein:

  • ein verschleierter Bezeichner (wie "hidden" oder "secret"). Dies sollte als Standard behandelt werden.
  • eine IP-Adresse (v4 oder v6, optional mit Port, wobei ipv6 in Anführungszeichen gesetzt und in eckige Klammern eingefasst ist)
  • "unknown", wenn die vorhergehende Entität nicht bekannt ist (und Sie dennoch anzeigen möchten, dass die Weiterleitung der Anfrage erfolgt ist)
for Optional

Der Client, der die Anfrage initiiert hat, und nachfolgende Proxys in einer Kette von Proxys. Der Bezeichner hat die gleichen möglichen Werte wie die by-Direktive.

host Optional

Das Host Request-Header-Feld, wie es vom Proxy empfangen wurde.

proto Optional

Gibt an, welches Protokoll zur Durchführung der Anfrage verwendet wurde (typischerweise "http" oder "https").

Beispiele

Verwendung des Forwarded-Headers

http
Forwarded: for="_mdn"

# case insensitive
Forwarded: For="[2001:db8:cafe::17]:4711"

# separated by semicolon
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43

# Values from multiple proxy servers can be appended using a comma
Forwarded: for=192.0.2.43, for=198.51.100.17

Übergang von X-Forwarded-For zu Forwarded

Wenn Ihre Anwendung, Ihr Server oder Ihr Proxy den standardisierten Forwarded-Header unterstützt, kann der Header X-Forwarded-For ersetzt werden. Beachten Sie, dass eine IPv6-Adresse in Forwarded in Anführungszeichen gesetzt und in eckige Klammern eingefasst ist (im Gegensatz zum X-Forwarded-For-Header).

http
X-Forwarded-For: 192.0.2.172
Forwarded: for=192.0.2.172

X-Forwarded-For: 192.0.2.43, 2001:db8:cafe::17
Forwarded: for=192.0.2.43, for="[2001:db8:cafe::17]"

Spezifikationen

Specification
Forwarded HTTP Extension

Siehe auch