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

За да го репродуцирате со HTTP-крајна точка што самите ја избирате, земете кандидат од листата со HTTP прокси-сервери и потврдете дека го прифаќа HTTPS-тунелот. На патеката на cURL-ракувачот на Guzzle 7.10, зачувајте го секој повратен повик на заглавија како одделен блок:

$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. Ракувачот на Guzzle 7.10 гради одговор за секој завршен блок заглавија и го повикува on_headers на таа граница.

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

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

Однесувањето е врзано за наведениот cURL-ракувач. Прилагоден ракувач или ракувач на тек не е должен да ги изложува истите повратни повици за ракување со проксито. Третирајте ги фатените прокси-заглавија како дијагностички податоци и избегнувајте непотребно чување вредности поврзани со сметка.

Поврзани статии