In HTTPS-oanfraach fia in HTTP-proxy kin ien antwurd krije dat CONNECT akseptearret en letter in antwurd fan 'e webside binnen dy tunnel. Foar de earste ynrjochting fan 'e rûte sjoch de proxy-opsje fan Guzzle per oanfraach. In header op it earste antwurd hoecht net yn it definitive antwurdobjekt te stean.

Om it wer te meitsjen mei in HTTP-einpunt dat jo sels kieze, nim in kandidaat út 'e list mei HTTP-proxy’s en befêstigje dat it de HTTPS-tunnel akseptearret. By it cURL-handlerpaad fan Guzzle 7.10 bewarje jo elke header-callback as in apart blok:

$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(),
        ];
    },
]);

De cURL-útwreiding moat CURLOPT_SUPPRESS_CONNECT_HEADERS eksposearje, in opsje dy't troch libcurl 7.54.0 yntrodusearre is. As jo dy op false sette, kinne CONNECT-headers de header-callback fan cURL berikke. De handler fan Guzzle 7.10 bout in antwurd foar elk foltôge headerblok en ropt on_headers op dy grins.

Hâld de blokken yn folchoarder. Autentikaasje-útdagings, trochferwizings en ynformaasje-antwurden kinne ekstra blokken meitsje; flakke net alle wearden yn ien array en klassifisearje in antwurd net allinnich om't de status 200 is.

It weromjûn antwurd fertsjintwurdiget it antwurd fan 'e foltôge oanfraach, wylst blocks de observaasjes bewarret dy't de callbacks sammelen. As de tunnel- of TLS-ynrjochting mislearret, behannelje dan de smiten transfer-útsûndering yn 'e oanropende applikaasje; in definitive webside-antwurd bestiet miskien net.

Dit gedrach is bûn oan 'e neamde cURL-handler. In oanpaste handler of streamhandler hoecht net deselde proxy-handshake-callbacks te eksposearjen. Behannelje fêstleine proxyheaders as diagnostyske gegevens en foarkom dat jo akkountbûne wearden unnoadich bewarje.

Relatearre artikelen