HTTPS zahtjev kroz HTTP proxy može primiti jedan odgovor koji prihvata CONNECT i kasniji odgovor web stranice unutar tog tunela. Za početno podešavanje rute pogledajte Guzzle opciju proxyja po zahtjevu. Zaglavlje iz prvog odgovora ne mora postojati na konačnom objektu odgovora.

Za reprodukciju s HTTP krajnjom točkom koju sami odaberete, uzmite kandidata iz liste HTTP proxyja i potvrdite da prihvata HTTPS tunel. Za putanju cURL rukovaoca u Guzzleu 7.10 sačuvajte svaki povratni poziv zaglavlja kao zaseban 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(),
        ];
    },
]);

cURL ekstenzija mora izložiti CURLOPT_SUPPRESS_CONNECT_HEADERS, opciju koju je uveo libcurl 7.54.0. Postavljanje na false omogućava da CONNECT zaglavlja stignu do cURL povratnog poziva zaglavlja. Guzzle 7.10 rukovalac gradi odgovor za svaki završeni blok zaglavlja i poziva on_headers na toj granici.

Držite blokove u redoslijedu. Autentifikacijski izazovi, preusmjeravanja i informativni odgovori mogu proizvesti dodatne blokove; ne spljoštavajte sve vrijednosti u jedan niz i ne klasificirajte odgovor samo zato što mu je status 200.

Vraćeni odgovor predstavlja odgovor završenog zahtjeva, dok blocks čuva zapažanja prikupljena povratnim pozivima. Ako podešavanje tunela ili TLS-a ne uspije, obradite bačeni izuzetak prijenosa u aplikaciji koja poziva; konačni odgovor web stranice možda ne postoji.

Ovo ponašanje vezano je za navedeni cURL rukovalac. Prilagođeni rukovalac ili rukovalac toka nije obavezan izložiti iste povratne pozive proxy rukovanja. Tretirajte uhvaćena proxy zaglavlja kao dijagnostičke podatke i izbjegavajte nepotrebno zadržavanje vrijednosti povezanih s računom.

Povezani članci