Trefnydd cURL Guzzle: dal penawdau CONNECT y dirprwy
Dal blociau penawdau ymateb ar wahân gyda threfnydd cURL Guzzle pan fo ateb CONNECT y dirprwy ac ymateb y wefan ill dau'n bwysig.
Gall cais HTTPS trwy ddirprwy HTTP dderbyn un ymateb sy'n derbyn CONNECT ac yna ymateb hwyrach o'r wefan y tu mewn i'r twnnel hwnnw. Ar gyfer y gosodiad llwybr cychwynnol, gweler opsiwn dirprwy fesul cais Guzzle. Nid oes rhaid i bennawd ar yr ymateb cyntaf fodoli ar y gwrthrych ymateb terfynol.
I atgynhyrchu gyda phennawd HTTP rydych chi'n ei ddewis eich hun, cymerwch ymgeisydd o'r rhestr dirprwyon HTTP a chadarnhewch ei fod yn derbyn y twnnel HTTPS. Ar gyfer llwybr trefnydd cURL Guzzle 7.10, cadwch bob galwad yn ôl penawdau fel bloc ar wahân:
$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(),
];
},
]);
Rhaid i'r estyniad cURL ddatgelu CURLOPT_SUPPRESS_CONNECT_HEADERS, opsiwn a gyflwynwyd gan libcurl 7.54.0. Mae ei osod i false yn caniatáu i benawdau CONNECT gyrraedd galwad yn ôl penawdau cURL. Mae trefnydd Guzzle 7.10 yn adeiladu ymateb ar gyfer pob bloc penawdau cyflawn ac yn galw on_headers ar y ffin honno.
Cadwch y blociau mewn trefn. Gall heriau dilysu, ailgyfeiriadau ac atebion gwybodaeth gynhyrchu blociau ychwanegol; peidiwch â gwastatáu pob gwerth i un arae na dosbarthu ymateb dim ond oherwydd bod ei statws yn 200.
Mae'r ymateb a ddychwelwyd yn cynrychioli ymateb y cais cyflawn, tra bod blocks yn cadw'r arsylwadau a gasglwyd gan y galwadau yn ôl. Os bydd gosodiad y twnnel neu TLS yn methu, triniwch yr eithriad trosglwyddo a deflir yn yr ap sy'n galw; efallai na fydd ymateb terfynol y wefan yn bodoli.
Mae'r ymddygiad hwn yn gysylltiedig â'r trefnydd cURL a nodwyd. Nid yw trefnydd arferol neu ffrydio yn gorfod datgelu'r un galwadau yn ôl llawio'r dirprwy. Triniwch benawdau'r dirprwy a ddaliwyd fel data diagnostig ac osgoi cadw gwerthoedd sy'n gysylltiedig â chyfrif yn ddiangen.