cURL handler របស់ Guzzle៖ ចាប់យកបឋមកថា CONNECT របស់ proxy
ចាប់យកប្លុកបឋមកថាការឆ្លើយតបដាច់ដោយឡែកជាមួយ cURL handler របស់ Guzzle នៅពេលដែលទាំងការឆ្លើយតប CONNECT របស់ proxy និងការឆ្លើយតបរបស់គេហទំព័រសុទ្ធតែសំខាន់។
សំណើ HTTPS តាមរយៈ proxy HTTP អាចទទួលបានការឆ្លើយតបមួយដែលទទួលយក CONNECT ហើយបន្ទាប់មកទទួលបានការឆ្លើយតបពីគេហទំព័រនៅខាងក្នុងផ្លូវរូងនោះ។ សម្រាប់ការរៀបចំផ្លូវដំបូង សូមមើល ជម្រើស proxy ក្នុងមួយសំណើរបស់ Guzzle។ បឋមកថានៅក្នុងការឆ្លើយតបដំបូងមិនចាំបាច់មាននៅក្នុងវត្ថុឆ្លើយតបចុងក្រោយទេ។
ដើម្បីបង្កើតឡើងវិញជាមួយចំណុចបញ្ចប់ HTTP ដែលអ្នកជ្រើសរើសដោយខ្លួនឯង សូមយកបេក្ខជនពី បញ្ជីប្រូកស៊ី HTTP ហើយបញ្ជាក់ថាវាទទួលយកផ្លូវរូង 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 រក្សាការសង្កេតដែលប្រមូលបានដោយការហៅត្រឡប់។ ប្រសិនបើការរៀបចំផ្លូវរូង ឬ TLS បរាជ័យ សូមដោះស្រាយករណីលើកលែងនៃការផ្ទេរដែលបានបោះនៅក្នុងកម្មវិធីហៅ។ ការឆ្លើយតបចុងក្រោយពីគេហទំព័រអាចមិនមាន។
អាកប្បកិរិយានេះភ្ជាប់ទៅនឹង cURL handler ដែលបានបញ្ជាក់។ handler ផ្ទាល់ខ្លួន ឬ stream handler មិនតម្រូវឱ្យបង្ហាញការហៅត្រឡប់នៃការចាប់ដៃ proxy ដូចគ្នាទេ។ សូមចាត់ទុកបឋមកថា proxy ដែលបានចាប់យកជាទិន្នន័យវិភាគ ហើយជៀសវាងការរក្សាតម្លៃដែលពាក់ព័ន្ធនឹងគណនីដោយមិនចាំបាច់។