HTTPS захтев кроз HTTP прокси може добити један одговор који прихвата CONNECT и каснији одговор са сајта унутар тог тунела. За почетно подешавање путање, погледајте опцију проксија по захтеву у Guzzle-у. Заглавље из првог одговора не мора постојати на објекту коначног одговора.

За репродукцију са HTTP крајњом тачком коју сами изаберете, узмите кандидата са листе HTTP проксија и потврдите да прихвата HTTPS тунел. За путању cURL обрађивача у Guzzle-у 7.10, сачувајте сваки header callback као одвојен блок:

$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 екстензија мора излагати CURLOPT_SUPPRESS_CONNECT_HEADERS, опцију коју је увео libcurl 7.54.0. Постављање на false омогућава да CONNECT заглавља стигну до cURL header callback-а. Guzzle 7.10 обрађивач гради одговор за сваки завршени блок заглавља и позива on_headers на тој граници.

Држите блокове по реду. Изазови аутентикације, преусмерења и информативни одговори могу произвести додатне блокове; не спајајте све вредности у један низ и не класификујте одговор само зато што му је статус 200.

Враћени одговор представља одговор завршеног захтева, док blocks чува запажања прикупљена callback-овима. Ако тунел или TLS подешавање не успе, обрадите избачени transfer exception у апликацији која позива; коначни одговор сајта можда не постоји.

Ово понашање је везано за наведени cURL обрађивач. Прилагођени или stream обрађивач није обавезан да изложи исте proxy-handshake callback-ове. Третирајте снимљена прокси заглавља као дијагностичке податке и избегавајте непотребно чување вредности везаних за налог.

Повезани чланци