Guzzle cURL обрађивач: снимање CONNECT заглавља проксија
Снимите одвојене блокове заглавља одговора помоћу Guzzle cURL обрађивача када су и одговор проксија на CONNECT и одговор сајта важни.
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-ове. Третирајте снимљена прокси заглавља као дијагностичке податке и избегавајте непотребно чување вредности везаних за налог.