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
CONNECT <host>:<port> HTTP/1.1
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.
CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
Proxy-Authorization: basic aGVsbG86d29ybGQ=
Spezifikationen
| Spezifikation |
|---|
| HTTP Semantics> # CONNECT> |