HTTPS pieprasījums caur HTTP starpniekserveri var saņemt vienu atbildi, kas pieņem CONNECT, un vēlāk vietnes atbildi šajā tunelī. Sākotnējai maršruta iestatīšanai skatiet Guzzle starpniekservera opciju katram pieprasījumam. Pirmās atbildes galvene neobligāti ir galīgajā atbildes objektā.

Lai atkārtotu ar jūsu pašu izvēlētu HTTP galapunktu, paņemiet kandidātu no HTTP starpniekserveru saraksta un pārliecinieties, ka tas pieņem HTTPS tuneli. Guzzle 7.10 cURL apstrādātāja ceļā saglabājiet katru galveņu atzvanīšanu kā atsevišķu bloku:

$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 paplašinājumam ir jāpiedāvā CURLOPT_SUPPRESS_CONNECT_HEADERS — opcija, ko ieviesa libcurl 7.54.0. Iestatot to uz false, CONNECT galvenes sasniedz cURL galveņu atzvanīšanu. Guzzle 7.10 apstrādātājs veido atbildi katram pabeigtajam galveņu blokam un šajā robežā izsauc on_headers.

Saglabājiet blokus secībā. Autentifikācijas izaicinājumi, novirzīšana un informatīvās atbildes var radīt papildu blokus; nesaplaciniet visas vērtības vienā masīvā un neklasificējiet atbildi tikai tāpēc, ka tās statuss ir 200.

Atgrieztā atbilde attēlo pabeigtā pieprasījuma atbildi, bet blocks saglabā atzvanīšanu apkopotos novērojumus. Ja tuneļa vai TLS iestatīšana neizdodas, apstrādājiet izmesto pārsūtīšanas izņēmumu izsaucošajā lietojumprogrammā; galīgā vietnes atbilde var nebūt.

Šī uzvedība ir saistīta ar norādīto cURL apstrādātāju. Pielāgots vai straumes apstrādātājs nav obligāti jāpiedāvā tās pašas starpniekservera rokasspiediena atzvanīšanas. Uzskatiet tvertās starpniekservera galvenes par diagnostikas datiem un izvairieties no liekas ar kontu saistītu vērtību glabāšanas.

Saistītie raksti