2012-06-27 21 views
5

मेरे पास एक सी ++ प्रोग्राम एक सीजीआई स्क्रिप्ट के रूप में कार्य करता है, और मैं वर्तमान में सीजीआईसीसी का उपयोग कर रहा हूं ताकि मेरे लिए कुछ पार्सिंग और स्वरूपण किया जा सके (हालांकि इसे शायद किसी बिंदु पर बदला जाएगा)। जब मेरी प्रतिक्रिया का निर्माण, मैं cgicc::HttpResponseHeader का उपयोग करें, जो मेरे जैसेस्क्रिप्ट से विकृत हेडर। खराब हेडर = HTTP/1.1 302 मिला

HTTP/1.1 302 Found 
Location: www.bla.com 

यह मेरे लिए बहुत मानक लग रहा है कुछ का निर्माण करेगा। हालांकि, वेबसर्वर कि पर chokes, मुझे एक

<...> malformed header from script. Bad header=HTTP/1.1 302 Found: script.cgi 

दे रही है मुझे पता चला कि यह कैसे तय करने के लिए:

  1. HTTP/... लाइन
  2. बजाय जोड़े एक लाइन Status: 302 Found

निकालें और वास्तव में, यह वास्तव में cgicc::HttpRedirectHeader करता है। मेरे पास अब दो प्रश्न हैं:

  1. क्या यह लाइन HTTP/1.1 302 Found मानक नहीं है?
  2. यदि यह नहीं है, तो cgicc::HttpResponseHeader ऐसा क्यों कर रहा है? यदि ऐसा है, तो मेरा वेबसर्वर इस पर क्यों चकित करता है?

नोट मैं इस बारे में जानने के तरीकों की तलाश नहीं कर रहा हूं, मुझे पता है कि यह कैसे करना है। मैं सिर्फ यह समझना चाहता हूं कि क्या हो रहा है।

चीयर्स ओले

उत्तर

5

HTTP लाइन मानक HTTP, लेकिन नहीं मानक सीजीआई है।

सीजीआई के तहत, स्क्रिप्ट वेब सर्वर पर स्थिति को संवाद करने के लिए Status शीर्षलेख का उपयोग करती है, और वेब सर्वर उस स्थिति कोड से HTTP प्रतिक्रिया रेखा का निर्माण करता है।

क्यों cgiccHTTP लाइन का निर्माण कर रहा है, मुझे नहीं पता - क्या यह संभव है कि आपको उस संदर्भ में उस विशेष श्रेणी का उपयोग नहीं करना चाहिए? शायद वह वर्ग केवल nph स्क्रिप्ट के साथ उपयोग के लिए है? The documentation तरह का संकेत करता है कि - मानक प्रतिक्रिया वर्गों के सेट का वर्णन के बाद, यह कहते हैं:

cgicc :: HTTPResponseHeader एक पूर्ण HTTP प्रतिक्रिया का निर्माण करने के लिए इस्तेमाल एक अधिक शक्तिशाली, सामान्य HTTP हेडर वर्ग है।

निहितार्थ यह है कि इसका इस्तेमाल करने की है कि एक सामान्य CGI स्क्रिप्ट में असामान्य है।

+0

ठीक है, यह बताता है। क्या सीजीआई का उपयोग करके मेरे लिए किसी भी तरह से है, यह निर्दिष्ट करने के लिए कि मैं कौन सा HTTP संस्करण उपयोग करना चाहता हूं (1.0/1.1)? मुझे वास्तव में अभी इसकी आवश्यकता नहीं है, लेकिन उत्सुकता से सीजीआई बेहतर समझना चाहेंगे। – Ole

+0

क्षमा करें, मुझे नहीं पता कि मानक सीजीआई आपको इसे नियंत्रित करने की अनुमति देता है या नहीं। आप 'nph' स्क्रिप्ट का उपयोग करके पूरी प्रक्रिया को ले सकते हैं, इस मामले में आप अपनी पसंद की कुछ भी कर सकते हैं। – RichieHindle

संबंधित मुद्दे