אַ HTTPS בקשה דורך אַ HTTP פּראָקסי קען באַקומען איין ענטפֿער וואָס נעמט אָן CONNECT און שפּעטער אַן ענטפֿער פֿון דער וועבזײַטל אין יענעם טונעל. וועגן דער ערשטער מאַרשרוט־אײַנשטעלונג זעט Guzzle'ס פּראָקסי אָפּציע פּער בקשה. אַ קעפּל אין דעם ערשטן ענטפֿער דאַרף נישט עקסיסטירן אויפֿן לעצטן ענטפֿער אָביעקט.

צו רעפּראָדוצירן מיט אַן HTTP ענדפּוינט וואָס איר קלײַבט אַליין, נעמט אַ קאַנדידאַט פֿון דער HTTP פּראָקסי ליסטע און באַשטעטיקט אַז ער נעמט אָן דעם HTTPS טונעל. פֿאַר Guzzle 7.10'ס cURL־האַנדלער וועג, האַלט יעדן 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 בײַ יענעם גרענעץ.

האַלט די בלעקן אין סדר. אויטענטיפֿיקאַציע אַרויסרופֿונגען, ווײַטערפֿירונגען און אינפֿאָרמאַציע־ענטפֿערס קענען שאַפֿן נאָך בלעקן; פֿלאַכט נישט אַלע ווערטן אין איין array און קלאַסיפֿיצירט נישט קיין ענטפֿער בלויז ווײַל זײַן סטאַטוס איז 200.

דער צוריקגעגעבענער ענטפֿער פֿאָרשטעלט דעם ענטפֿער פֿון דער פֿאַרענדיקער בקשה, בשעת blocks האַלט די אָבסערוואַציעס וואָס די callbacks האָבן צונויפֿגעקליבן. אויב דער טונעל אָדער די TLS אײַנשטעלונג פֿאַלט, באַהאַנדלט דעם געוואָרפֿענעם transfer exception אין דער רופֿנדיקער אַפּליקאַציע; אַ לעצטער וועבזײַטל־ענטפֿער קען פֿעלן.

דאָס פֿאַרהאַלטן איז פֿאַרבונדן מיטן דערמאָנטן cURL האַנדלער. אַ פּערזענלעכער אָדער stream האַנדלער איז נישט פֿאַרפֿליכטעט צוצושטעלן די זעלבע proxy-handshake callbacks. באַטראַכט די אָפּגעכאַפּטע פּראָקסי־קעפּלעך ווי דיאַגנאָסטיש דאַטן און פֿאַרמײַדט אומנויטיקע אויפֿהיטונג פֿון קאָנטאָ־בײַשטאַנדן.

פֿאַרבונדענע אַרטיקלען