cURL-handfarið hjá Guzzle: fanga CONNECT-høvd hjá proxy
Fanga serskildar høvdblokkir í svari við cURL-handfarinum hjá Guzzle, tá bæði CONNECT-svarið frá proxyinum og svarið frá heimasíðuni eru týdningarmikil.
Ein HTTPS-fyrispurningur gjøgnum ein HTTP-proxy kann fáa eitt svar, sum góðtekur CONNECT, og seinni eitt svar frá heimasíðuni inni í tí tunnilinum. Fyri fyrsta leiðarstilling, sí proxy-valmøguleikan hjá Guzzle fyri hvønn fyrispurning. Eitt høvd á fyrsta svarinum má ikki vera á endaliga svarobjektinum.
Fyri at endurgera við einum HTTP-endapkti, sum tú velur sjálvur, tak eitt evni úr listanum við HTTP-proxyum og vátta, at tað góðtekur HTTPS-tunnilin. Á cURL-handfaraleiðini hjá Guzzle 7.10 skalt tú varðveita hvørt høvd-afturkall sum eina serstaka blokk:
$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-víðkanin má bjóða CURLOPT_SUPPRESS_CONNECT_HEADERS, eitt valmøguleika, sum libcurl 7.54.0 innleiddi. At seta hann til false letur CONNECT-høvd koma til høvd-afturkallið í cURL. Handfarið hjá Guzzle 7.10 byggir eitt svar fyri hvørja fullgjørd høvdblokk og kallar on_headers á tí markinum.
Halt blokkirnar í raðfylgju. Samráðingar um auðkenning, umstillingar og upplýsingarsvar kunnu gera fleiri blokkir; legg ikki øll virði í eitt array og flokka ikki eitt svar bara tí, at støða tess er 200.
Svaraða svarið umboðar svar ið fullgjørdum fyrispurningi, meðan blocks varðveitir eftirlitini, sum afturkøllini savnaðu. Um tunnil- ella TLS-stillingin miseydnast, viðger tá kastaða transfer-undantakið í kallandi forritinum; eitt endaligt svar frá heimasíðuni er kanska ikki til.
Hesi atferð er bundin at nevnda cURL-handfarinum. Eitt serstakt handfar ella streymhandfar er ikki skyldugt at bjóða somu proxy-handtrykk-afturkøll. Viðgerð fangaðu proxy-høvd sum greiningardáta og slepp at varðveita kontotengd virði uttan tørv.