तो, लंबी कहानी छोटी है, मेरे पास एक AJAX एप्लिकेशन है जो एमवीसी वेब एपीआई को बैक एंड के रूप में उपयोग करता है। क्लाइंट हालांकि एक अलग डोमेन से कॉल करता है और क्रॉस-डोमेन अनुरोध समस्याओं को प्राप्त करने के लिए PHP प्रॉक्सी फ़ाइल का उपयोग करता है।मैं 100 जारी रखने से curl कैसे रोक सकता हूं?
हालांकि, PHP प्रॉक्सी का उपयोग करते हुए, वेब एपीआई 100 Continue
HTTP शीर्षलेख के साथ कुछ अनुरोधों का जवाब देता है और कोई भी अनुरोध जो इसे वापस पाने के लिए अत्यधिक समय लेता है (हम 2 मिनट तक बात कर रहे हैं) और यह भी कर सकते हैं एक गैर वैध प्रतिक्रिया वापस करें।
यह appears to be a known issue with cURL और वैकल्पिक हल आमतौर पर उम्मीद को दूर करने के लिए नीचे दिए गए लाइन डालने के रूप में उद्धृत किया गया है: cURL अनुरोध
दुर्भाग्य में 100 शीर्ष, समाधान मेरे लिए मायावी हो रहा है:
$headers = getallheaders();
$headers_new = "";
foreach($headers as $title => $body) {
$headers_new[] = $title.": ".$body;
}
//$headers_new[] = 'Expect:';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_new);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
यह कोड काम करता है लेकिन अन्य सभी शीर्षकों को हटा देता है (जो मेरे लिए व्यावहारिक नहीं है क्योंकि मैं एपीआई के साथ प्रमाणित करने के लिए HTTP मूल ऑथ हेडर का उपयोग कर रहा हूं)। आप यह भी ध्यान दे सकते हैं कि मैंने मौजूदा शीर्षकों में Expect:
जोड़ने का प्रयास किया, लेकिन इससे मेरी मदद नहीं हुई।
मैं मौजूदा शीर्षकों को कैसे बनाए रख सकता हूं, लेकिन 100 को जारी रखने से curl को भी रोक सकता हूं?
'getallheaders()' क्या आप यह करता है लगता है लगता है ऐसा नहीं करता है:
यहाँ स्क्रिप्ट है: जब से मैं HTTP PUT के लिए इस की जरूरत है, मैं इसे निम्नलिखित परिणामों के साथ एक सा बढ़ाया । यह अनुरोध हेडर प्राप्त करता है जो आपको भेजे गए थे, अनुरोध हेडर नहीं जो कर्ल का उपयोग करेंगे। आपको केवल 'curl_setopt ($ ch, CURLOPT_HTTPHEADER, सरणी (' अपेक्षा: ') की आवश्यकता होनी चाहिए); 'रेखा - उपरोक्त कोड से बाकी सब कुछ हटा दें और इसे काम करना चाहिए। – DaveRandom
डेव रैंडम - असल में यह वास्तव में इरादा है - मैं अनुरोध हेडर ले रहा हूं और उन्हें एपीआई पर भेज रहा हूं (उनमें HTTP एथ सामान शामिल हैं)। समस्या यह है कि curl इन शीर्षकों के लिए 'उम्मीद: 100' _add_ होगा। – jmillar
[इस] का जिक्र करते हुए (http://stackoverflow.com/questions/2964687/how-to-handle-100-continue-http-message) क्या आप 'curl_setopt ($ ch, CURLOPT_FAILONERROR, TRUE) जोड़ने का प्रयास कर सकते हैं; '? उम्मीद है की यह मदद करेगा। – user1190992