ຄຳຮ້ອງ HTTPS ຜ່ານ proxy HTTP ອາດໄດ້ຮັບການຕອບໜຶ່ງທີ່ຍອມຮັບ CONNECT ແລະ ຈາກນັ້ນກໍໄດ້ຮັບການຕອບຈາກເວັບໄຊຕ໌ພາຍໃນ tunnel ນັ້ນ. ສຳລັບການຕັ້ງເສັ້ນທາງເບື້ອງຕົ້ນ ເບິ່ງ ຕົວເລືອກ proxy ຕໍ່ຄຳຮ້ອງຂອງ Guzzle. ເຮດເດີໃນການຕອບຄັ້ງທຳອິດບໍ່ຈຳເປັນຕ້ອງມີຢູ່ໃນວັດຖຸການຕອບສຸດທ້າຍ.

ເພື່ອສ້າງຄືນກັບຈຸດສິ້ນສຸດ HTTP ທີ່ທ່ານເລືອກເອງ ໃຫ້ເອົາຜູ້ສະໝັກຈາກ ລາຍການພຣັອກຊີ HTTP ແລະ ຢືນຢັນວ່າມັນຍອມຮັບ tunnel HTTPS. ໃນເສັ້ນທາງ cURL handler ຂອງ 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. cURL handler ຂອງ Guzzle 7.10 ສ້າງການຕອບສຳລັບແຕ່ລະບລັອກເຮດເດີທີ່ສຳເລັດ ແລະ ເອີ້ນ on_headers ຢູ່ຂອບເຂດນັ້ນ.

ເກັບບລັອກໃຫ້ຢູ່ໃນລຳດັບ. ການທ້າທາຍການຢືນຢັນ ການປ່ຽນເສັ້ນທາງ ແລະ ການຕອບແບບຂໍ້ມູນອາດສ້າງບລັອກເພີ່ມເຕີມ; ຢ່າເຮັດໃຫ້ຄ່າທັງໝົດແປເປັນອາເຣດຽວ ແລະ ຢ່າຈັດປະເພດການຕອບພຽງເພາະສະຖານະຂອງມັນເປັນ 200.

ການຕອບທີ່ສົ່ງຄືນເປັນຕົວແທນການຕອບຂອງຄຳຮ້ອງທີ່ສຳເລັດ ສ່ວນ blocks ເກັບຂໍ້ສັງເກດທີ່ການເອີ້ນກັບເກັບໄດ້. ຖ້າການຕັ້ງ tunnel ຫຼື TLS ລົ້ມເຫຼວ ໃຫ້ຈັດການຂໍ້ຍົກເວັ້ນການໂອນທີ່ຖືກໂຍນໃນແອັບທີ່ເອີ້ນ; ການຕອບສຸດທ້າຍຈາກເວັບໄຊຕ໌ອາດບໍ່ມີ.

ພຶດຕິກຳນີ້ຜູກກັບ cURL handler ທີ່ກ່າວມາ. handler ກຳນົດເອງ ຫຼື stream handler ບໍ່ຈຳເປັນຕ້ອງເປີດເຜີຍການເອີ້ນກັບການຈັບມື proxy ແບບດຽວກັນ. ຖືວ່າເຮດເດີ proxy ທີ່ຈັບໄດ້ເປັນຂໍ້ມູນການວິເຄາະ ແລະ ຫຼີກລ່ຽງການເກັບຄ່າທີ່ກ່ຽວຂ້ອງກັບບັນຊີໂດຍບໍ່ຈຳເປັນ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ