Guzzle cURL హ్యాండ్లర్: ప్రాక్సీ CONNECT హెడర్లను సంగ్రహించడం
ప్రాక్సీయొక్క CONNECT ప్రతిస్పందన మరియు వెబ్సైట్ ప్రతిస్పందన రెండూ ముఖ్యమైనప్పుడు Guzzle cURL హ్యాండ్లర్తో వేర్వేరు ప్రతిస్పందన హెడర్ బ్లాకులను సంగ్రహించండి.
HTTP ప్రాక్సీ ద్వారా వెళ్లే HTTPS అభ్యర్థన 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 మాత్రం callback లు సేకరించిన పరిశీలనలను భద్రపరుస్తుంది. సొరంగం లేదా TLS సెటప్ విఫలమైతే, విసిరిన transfer exception ను పిలిచే అప్లికేషన్లో నిర్వహించండి; తుది వెబ్సైట్ ప్రతిస్పందన ఉండకపోవచ్చు.
ఈ ప్రవర్తన పేర్కొన్న cURL హ్యాండ్లర్కు ముడిపడి ఉంది. అనుకూల లేదా stream హ్యాండ్లర్ అదే proxy-handshake callback లను అందించాల్సిన బాధ్యత లేదు. సంగ్రహించిన ప్రాక్సీ హెడర్లను నిర్ధారణ డేటాగా పరిగణించి, ఖాతాకు సంబంధించిన విలువలను అనవసరంగా ఉంచుకోవద్దు.