Ein HTTPS-Dienst auf Port 8443 ist über einen HTTP-Proxy auf Port 8080 erreichbar. Diese Zahlen beschreiben unterschiedliche Verbindungen:

$handle = curl_init('https://api.example:8443/status');
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);

Die Anwendung verantwortet weiterhin Ausführung, Fehlerbehandlung und Lebenszyklus des Handles. Das Snippet hält die Routing-Eingaben zusammen, ohne die Zertifikatsprüfung zu verändern.

cURL verbindet sich zuerst mit proxy.example:8080. Für dieses HTTPS-Ziel nennt die Tunnelanfrage api.example:8443, und die TLS-Identität bleibt api.example.

CURLOPT_PORT überschreibt den Ziel-Port, nicht den Port des Proxys. Wer ihn immer dann auf 443 setzt, wenn eine URL mit https beginnt, kann einen absichtlich auf 8443 gehosteten Dienst überschreiben. libcurl empfiehlt, den Port in der URL zu wählen, statt diese Option zu verwenden.

Bei der Wiederverwendung eines Handles ist auch eine frühere ausdrückliche Port-Überschreibung zu berücksichtigen. Eine neue URL macht widersprüchlich beibehaltene Optionen nicht leichter zu deuten.

Der Vermittler muss CONNECT zum gewählten Ziel-Port erlauben. Eine Ablehnung für 8443 ist kein Grund, den Proxy-Listener zu verlegen oder die TLS-Prüfung abzuschalten.

Ähnliche Artikel