मुझे कुछ कस्टम हेडर ":" से शुरू करने की आवश्यकता है।

$option['headers'][] = ":authority: example.com"; //<-- Here is the problem
$option['headers'][] = "accept-encoding: gzip, deflate, br";
$option['post'] = json_encode(array("Domain"=>"example.com"));
$url = "https://www.google.com";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36");
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_COOKIEFILE,"file.cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"file.cookie");
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_VERBOSE, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $option['post']);
curl_setopt($ch, CURLOPT_HTTPHEADER, $option['headers']);
$getdata = curl_exec($ch);

मैं ":" को chr (58) से बदलने की कोशिश करता हूं लेकिन वही समस्या है। मुझे त्रुटि 55 मिलती है और लॉग से "* HTTP पोस्ट अनुरोध भेजने में विफल"। अगर मैं टिप्पणी करता हूं कि पहली पंक्ति काम कर रही है, लेकिन मुझे वास्तव में उस शीर्षलेख की आवश्यकता है। मैं यहाँ फंस गया हूँ। कोई उपाय?

0
Ciprian 25 अक्टूबर 2020, 14:10

1 उत्तर

सबसे बढ़िया उत्तर

:authority: एक HTTP/2 छद्म शीर्षलेख की तरह दिखता है, और आप उन्हें कर्ल के साथ इस तरह सेट नहीं कर सकते। हालांकि कर्ल इसे अपने आप पास कर देगा और यह उसी सामग्री का उपयोग करेगा जैसा कि यह Host: के लिए सेट करेगा ताकि इसे उसी तरह से काम किया जा सके, स्वतंत्र रूप से किस HTTP संस्करण का अंततः उपयोग किया जाता है (यह HTTP/3 के साथ भी काम करेगा )

1
Daniel Stenberg 25 अक्टूबर 2020, 11:15