2009-09-13 14 views
9

से http अनुरोध प्रकार (जीईटी, हेड, इत्यादि) का पता लगाना, मैं अपने पायथन सीजीआई के http अनुरोध को कैसे प्राप्त कर सकता हूं? मुझे सिर और जीईटी के लिए अलग-अलग व्यवहार की ज़रूरत है।एक पायथन सीजीआई

धन्यवाद!

+0

आप mod_wsgi का उपयोग क्यों नहीं कर रहे हैं? –

+1

क्योंकि मुझे नहीं पता कि यह क्या है। ओ :-) – cfischer

उत्तर

14
import os 

if os.environ['REQUEST_METHOD'] == 'GET': 
    # blah 
0

यह आपके प्रश्न का सीधा जवाब नहीं है। लेकिन आपका प्रश्न गलत तरीके से काम करने से उत्पन्न होता है।

पायथन सीजीआई स्क्रिप्ट्स न लिखें।

mod_wsgi एप्लिकेशन लिखें। बेहतर अभी भी, एक पायथन वेब ढांचे का उपयोग करें। दर्जनों हैं। Werkzeug जैसे एक चुनें।

डब्लूएसजीआई मानक (PEP 333 में वर्णित) वेब अनुरोध में चीजों को ढूंढना बहुत आसान बनाता है।

mod_wsgi कार्यान्वयन एक CGI से तेज़ और अधिक सुरक्षित है।

एक वेब ढांचा आपकी स्वयं की सीजीआई स्क्रिप्ट या mod_wsgi एप्लिकेशन लिखने से भी आसान है।

+0

मैं mod_wsgi में देखूंगा, लेकिन यह केवल एक अस्थायी समाधान है, क्योंकि हम जल्द ही खतरे में जा रहे हैं। – cfischer

0

आपको GET और HEAD के बीच अंतर करने की आवश्यकता क्यों है?

आम तौर पर आपको एक जीईटी की तरह एक हेड अनुरोध का अंतर नहीं करना चाहिए और उसका इलाज नहीं करना चाहिए। ऐसा इसलिए है क्योंकि एक हेड अनुरोध एक ही जीईटी के समान सटीक हेडर को वापस करने के लिए है। केवल अंतर यह है कि कोई प्रतिक्रिया सामग्री नहीं होगी। सिर्फ इसलिए कि कोई प्रतिक्रिया सामग्री नहीं है, इसका मतलब यह नहीं है कि अब आपको एक वैध सामग्री-लंबाई शीर्षलेख, या अन्य शीर्षलेख वापस नहीं करना है, जो प्रतिक्रिया सामग्री पर निर्भर हैं।

mod_wsgi में, जो विभिन्न लोग आपको इंगित कर रहे हैं, वास्तव में जानबूझकर कुछ मामलों में हेड से अनुरोध विधि को जानबूझकर बदलकर उन लोगों के खिलाफ सुरक्षा करने के लिए जो गंभीर रूप से HEAD का इलाज करते हैं। विशिष्ट मामला जहां यह किया जाता है वह है जहां अपाचे आउटपुट फ़िल्टर पंजीकृत होता है। इस मामले में ऐसा करने का कारण यह है कि आउटपुट फ़िल्टर प्रतिक्रिया सामग्री को देखने की उम्मीद कर सकता है और इससे अतिरिक्त प्रतिक्रिया शीर्षलेख उत्पन्न होते हैं। यदि आप एक हेड अनुरोध के लिए कोई प्रतिक्रिया सामग्री उत्पन्न करने के लिए परेशान न होने का निर्णय लेना चाहते हैं, तो आप सामग्री के आउटपुट फ़िल्टर को वंचित कर देंगे और उनके द्वारा जोड़े गए हेडर तब तक सहमत नहीं होंगे, जो किसी GET अनुरोध से वापस लौटाया जाएगा। इसका अंतिम परिणाम यह है कि आप कैश और ब्राउज़र के संचालन को भर सकते हैं।

यह अपाचे के पीछे सीजीआई स्क्रिप्ट के लिए समान रूप से लागू हो सकता है क्योंकि आउटपुट फ़िल्टर अभी भी उस मामले में जोड़े जा सकते हैं। सीजीआई स्क्रिप्ट के लिए उपयोगकर्ताओं के खिलाफ बेवकूफ होने और चीजों के लिए अलग-अलग काम करने के खिलाफ सुरक्षा के बावजूद कुछ भी नहीं है।

+0

कुछ वैध लिंक चेकर्स एक हेड विधि के साथ मेरी साइट पर संसाधन का उपयोग करते हैं। वे हानिरहित हैं। ओटीओएच, एक गैजिलियन बॉट्स मेरी साइट को डीडीईटी के साथ उसी संसाधन में एक्सेस कर रहे हैं। यही कारण है कि मुझे अंतर बताने की जरूरत है। – cfischer

+0

यदि आपको ऐसे अनुरोध प्राप्त हो रहे हैं जिन्हें आप नहीं चाहते हैं, तो आपको शायद इसे फिर से लिखने के लिए सर्वर स्ट्रिंग को देखकर सर्वर पर अवरुद्ध करने का प्रयास करना चाहिए, जो हेडर के निरीक्षण की अनुमति देता है। सीजीआई लिपि में अभी भी क्यों जाना है? –

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