Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

CONNECT request method

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Die HTTP-Methode CONNECT fordert einen Proxy auf, einen HTTP-Tunnel zu einem Zielserver einzurichten. Ist dies erfolgreich, leitet der Proxy Daten in beide Richtungen unverändert weiter, bis der Tunnel geschlossen wird. In HTTP/2 und HTTP/3 wird eine erweiterte CONNECT-Anfrage auch verwendet, um Protokolle wie WebSockets und WebTransport über einen HTTP-Stream auszuführen.

Anfrage hat einen Body Nein
Erfolgreiche Antwort hat einen Body Nein
Sicher Nein
Idempotent Nein
Cachebar Nein
In HTML-Formularen zulässig Nein

Syntax

http
CONNECT <host>:<port> HTTP/1.1
<host>

Ein Host, der ein registrierter Hostname (z. B. example.com) oder eine IP-Adresse (IPv4, IPv6) sein kann.

<port>

Eine Portnummer in Dezimalschreibweise (z. B. 80, 443). Es gibt keinen Standardport; daher muss ein Client eine Portnummer angeben.

Beschreibung

Das Anfrageziel ist bei dieser Methode insofern einzigartig, als es nur aus dem Host und der Portnummer des Tunnelziels besteht, getrennt durch einen Doppelpunkt (siehe Syntax). Jeder erfolgreiche 2XX-Antwortstatuscode bedeutet, dass der Proxy in den „Tunnelmodus“ wechselt. Alle Daten im Body der erfolgreichen Antwort stammen dann von dem Server, der durch das Anfrageziel angegeben ist.

Wenn sich eine Website hinter einem Proxy befindet und Netzwerkregeln vorschreiben, dass der gesamte externe Datenverkehr über den Proxy laufen muss, können Sie mit der Methode CONNECT eine TLS-Verbindung (HTTPS) zu dieser Website herstellen:

  • Der Client fordert den Proxy auf, die TCP-Verbindung zum gewünschten Ziel zu tunneln.
  • Der Proxyserver stellt im Auftrag des Clients eine sichere Verbindung zum Server her.
  • Sobald die Verbindung hergestellt ist, leitet der Proxyserver den TCP-Datenstrom weiterhin vom und zum Client weiter.

Ein HTTP-Tunnel ermöglicht nicht nur den sicheren Zugriff auf Websites hinter Proxys, sondern bietet auch eine Möglichkeit, Datenverkehr, der andernfalls eingeschränkt wäre (etwa SSH oder FTP), über das HTTP(S)-Protokoll zu übertragen.

CONNECT ist eine Hop-by-Hop-Methode. Das bedeutet, dass Proxys die CONNECT-Anfrage nur weiterleiten, wenn sich vor dem Ursprungsserver ein weiterer vorgeschalteter Proxy befindet, da die meisten Ursprungsserver CONNECT nicht implementieren.

Warnung: Wenn Sie einen Proxy betreiben, der CONNECT unterstützt, beschränken Sie dessen Verwendung auf eine Gruppe bekannter Ports oder eine konfigurierbare Liste sicherer Anfrageziele. Das Einrichten eines Tunnels zu beliebigen Servern birgt erhebliche Risiken, insbesondere wenn das Ziel ein bekannter oder reservierter TCP-Port ist, der nicht für Web-Datenverkehr vorgesehen ist. Ein unzureichend konfigurierter Proxy kann beispielsweise missbraucht werden, um Datenverkehr wie SMTP weiterzuleiten und so Spam-E-Mails zu versenden.

Erweitertes CONNECT

HTTP/2 und HTTP/3 definieren außerdem eine erweiterte CONNECT-Anfrage, mit der ein anderes Protokoll über einen einzelnen HTTP-Stream ausgeführt werden kann (RFC 8441 und RFC 9220). Die Anfrage enthält einen :protocol-Pseudo-Header, der das Protokoll benennt, sowie die Pseudo-Header :scheme, :authority und :path, die die Zielressource identifizieren. Die Anfrage wird an den Ursprungsserver gesendet, der seine Unterstützung zunächst über die Einstellung SETTINGS_ENABLE_CONNECT_PROTOCOL bekannt geben muss. Antwortet der Server mit einem erfolgreichen 2XX-Antwortstatuscode, übernimmt das benannte Protokoll den Stream.

Erweitertes CONNECT wird verwendet, um WebSocket-Verbindungen über HTTP/2 und HTTP/3 zu öffnen (mit :protocol auf websocket gesetzt) und WebTransport-Sitzungen einzurichten (mit :protocol auf webtransport gesetzt).

Beispiele

Proxy-Autorisierung

Eine Anfrage an Proxyserver, die eine Autorisierung zum Einrichten eines Tunnels erfordern, sieht wie folgt aus. Weitere Informationen finden Sie unter dem Header Proxy-Authorization.

http
CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
Proxy-Authorization: basic aGVsbG86d29ybGQ=

Spezifikationen

Spezifikation
HTTP Semantics
# CONNECT

Browser-Kompatibilität

Siehe auch