HTTP proxy vasitəsilə edilən HTTPS sorğusu CONNECT-i qəbul edən bir cavab, sonra həmin tunelin içində veb saytdan gələn bir cavab ala bilər. İlkin marşrut qurulumu üçün Guzzle-ın hər sorğu üçün proxy seçiminə baxın. Birinci cavabdakı başlığın yekun cavab obyektində olması mütləq deyil.

Özünüz seçdiyiniz HTTP son nöqtəsi ilə təkrar yaratmaq üçün HTTP proksi siyahısından namizəd götürün və onun HTTPS tunelini qəbul etdiyini təsdiqləyin. Guzzle 7.10-un cURL handler yolunda hər başlıq əkiz-çağırışını ayrı blok kimi saxlayı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(),
        ];
    },
]);

cURL uzantısı libcurl 7.54.0 tərəfindən təqdim edilmiş CURLOPT_SUPPRESS_CONNECT_HEADERS seçimini açıqlamalıdır. Onu false etmək CONNECT başlıqlarının cURL-in başlıq əkiz-çağırışına çatmasına imkan verir. Guzzle 7.10 handler hər tamamlanmış başlıq bloku üçün cavab qurur və həmin sərhəddə on_headers çağırır.

Blokları sıra ilə saxlayın. Autentifikasiya çağırışları, yönləndirmələr və məlumat cavabları əlavə bloklar yarada bilər; bütün dəyərləri bir massivə düzləndirməyin və cavabı yalnız statusu 200 olduğuna görə təsnif etməyin.

Qaytarılan cavab tamamlanmış sorğunun cavabını təmsil edir, blocks isə geri çağırışların topladığı müşahidələri saxlayır. Tunel və ya TLS qurulumu uğursuz olarsa, çağıran tətbiqdə atılan ötürmə istisnasını idarə edin; yekun veb sayt cavabı olmaya bilər.

Bu davranış göstərilən cURL handler ilə bağlıdır. Fərdi və ya axın handler eyni proxy-əl sıxışması geri çağırışlarını açıqlamağa borclu deyil. Tutulan proxy başlıqlarını diaqnostik məlumat kimi qiymətləndirin və hesabla bağlı dəyərləri lazımsız saxlamaqdan çəkinin.

Əlaqəli məqalələr