Dem Guzzle säin cURL-Handler: CONNECT-Header vum Proxy erfaassen
Erfaasst getrennt Bléck vun Äntwert-Header mam cURL-Handler vu Guzzle, wann souwuel d'CONNECT-Antwert vum Proxy wéi och d'Äntwert vun der Websäit wichteg sinn.
Eng HTTPS-Ufro iwwer en HTTP-Proxy kann eng Äntwert kréien, déi CONNECT akzeptéiert, an duerno eng Äntwert vun der Websäit bannent deem Tunnel. Fir déi éischt Rute-Arichtungen, kuckt dem Guzzle seng Proxy-Optioun pro Ufro. En Header vun der éischter Äntwert muss net um definitiven Äntwertobjekt existéieren.
Fir eng Reproduktioun mat engem HTTP-Endpunkt, deen dir selwer auswielt, huelt e Kandidat aus der Lëscht vun HTTP-Proxye a bestätegt, datt en den HTTPS-Tunnel akzeptéiert. Um cURL-Handler-Pad vu Guzzle 7.10 halit all Header-Callback als e getrennte Block:
$blocks = [];
$client = new \GuzzleHttp\Client([
'handler' => \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
),
]);
$response = $client->get('https://www.example.com/', [
'proxy' => 'http://proxy.example:8080',
'curl' => [CURLOPT_SUPPRESS_CONNECT_HEADERS => false],
'on_headers' => function (
\Psr\Http\Message\ResponseInterface $part
) use (&$blocks) {
$blocks[] = [
'status' => $part->getStatusCode(),
'reason' => $part->getReasonPhrase(),
'headers' => $part->getHeaders(),
];
},
]);
D'cURL-Erweiderung muss CURLOPT_SUPPRESS_CONNECT_HEADERS ubidden, eng Optioun, déi vu libcurl 7.54.0 agefouert gouf. Wa se op false gesat gëtt, erreechen d'CONNECT-Header den Header-Callback vun cURL. Den Handler vu Guzzle 7.10 baut eng Äntwert fir all fäerdege Headerblock a rifft on_headers op där Grenz op.
Halt d'Bléck an der Rei. Authentifikatiouns-Herausfuerderungen, Ëmleedungen an Informatiounsäntwerten kënnen zousätzlech Bléck produzéieren; flaacht net all Wäerter an eng eenzeg Array a klassifizéiert eng Äntwert net just well hire Status 200 ass.
Déi zréckginn Äntwert representéiert d'Äntwert vun der fäerdeger Ufro, wärend blocks d'Observatiounen erhält, déi vun den Callbacke gesammelt goufen. Wann d'Tunnel- oder TLS-Arichtung feelschléit, behandelt déi geworf Transfer-Ausnam an der appeléierender Applikatioun; et ka sinn, datt et keng definitiv Websäit-Äntwert gëtt.
Dëst Verhalen ass un den uginnene cURL-Handler gebonnen. En eegene Handler oder Stream-Handler ass net verflicht, déiselwecht Proxy-Handshake-Callbacks ze bidden. Behandelt erfaasst Proxy-Header als Diagnosedaten a vermeit et, kontobezunnen Wäerter onnéideg ze halen.