कॉमन गेटवे इंटरफेस
कॉमन गेटवे इंटरफेस CGI एक बाहरी एप्लीकेशन सॉफ्टवेयर का सूचना देने वाले सर्वर के साथ संपर्क साधने के लिए एक मानक प्रोटोकॉल है, जो कि आमतौर पर एक वेब सर्वर होता है।
इस सूचना देने वाले सर्वर का कार्य, आउटपुट/परिणाम (क्लाईंट वेब ब्राउज़र के अनुरोध के मामले में वेब सर्वर) के द्वारा अनुरोध का जवाब देना है। हर बार एक अनुरोध प्राप्त होने पर, सर्वर अनुरोध का विश्लेषण करता है और उचित उत्तर देता है। ऐसा करने के लिए सर्वर द्वारा निम्नलिखित दो बुनियादी तरीके प्रयुक्त किये जाते हैं:CGI दूसरे तरीके को करने का मानक ढंग परिभाषित करता है। यह परिभाषित करता है कि कैसे सर्वर के बारे में जानकारी और अनुरोध, तर्क तथा स्थिति के अनुसार वेरिएबल के रूप में भेजे जाते हैं और कैसे कमांड हैडर के रूप में परिणाम (जैसे टाइप के रूप में) की अतिरिक्त जानकारी भेज सकते हैं।
1993 में वर्ल्ड वाइड वेब (WWW) सीमित, किन्तु तेजी से बढ़ रहा था। WWW सॉफ्टवेयर डेवलपर्स और वेब साइट डेवलपर्स www-टॉक मेलिंग सूची के द्वारा एक दूसरे के संपर्क में रहते थे, इसलिए इस तरह संपर्क साधने के लिए कमांड लाइन चलाने के एक मानक पर सहमति हुई। CGI विवरणी में विशेष रूप से वर्णित योगदानकर्ता निम्नलिखित हैं:
रॉब मैककूल ने प्रारंभिक विशेषताओं का मसौदा तैयार किया और NCSA इसे अब भी होस्ट करता है। यह बहुत से सर्वरों में तेजी से लागू किया गया था।
CGI कार्यक्रम का एक उदाहरण एक वाईकी को लागू करना है। यूज़र एजेंट एक प्रविष्टि के नाम का अनुरोध करता है; सर्वर प्रविष्टि के पृष्ठ (यदि मौजूद है) से उसका स्रोत प्राप्त करेगा, इसे HTML में बदलेगा और परिणाम भेजेगा.
वेब सर्वर के नज़रिए से, कुछ लोकेटर (ढूढने वाली साईट्स), जैसे http://www.example.com/wiki.cgi, एक प्रोग्राम में CGI द्वारा चलने के लिए परिभाषित किये गये हैं। जब URL के लिए अनुरोध प्राप्त होता है तो इस से सम्बंधित कार्यक्रम चलाया जाता है।
डाटा स्थिति के अनुसार वेरिएबल का प्रयोग कर के प्रोग्राम में डाला जाता है। यह विशिष्ट चालन के विपरीत है, जहां कमांड लाइन तर्क प्रयोग किये जाते हैं। HTTP PUT या POST, के मामले में, उपयोगकर्ता द्वारा डाला गया डाटा मानक इनपुट के माध्यम से प्रोग्राम को उपलब्ध कराया जाता है।
वेब सर्वर में डायरेक्टरी ट्री के आधार पर एक cgi-bin डायरेक्टरी होती है जो CGI द्वारा मांगी जाने वाली चलाने योग्य (एग्जीक्यूटेबल) फ़ाइलों का संग्रहण रखती है।
प्रोग्राम वेब सर्वर पर मानक उत्तर के रूप में परिणाम भेजता है, जिसके शुरू में एक हैडर और एक रिक्त पंक्ति होती है।
हैडर उसी तरह से कूटबद्ध होता है जैसे एक HTTP हैडर और इसमें भेजे गये दस्तावेज़ का MIME प्रकार भी शामिल होना चाहिए। हैडर आमतौर पर परिणाम के साथ उपयोगकर्ता को आगे भेजे जाते हैं, जिसे वेब सर्वर द्वारा प्रदान किया जाता है।
यदि किसी मामले में CGI कॉल में स्क्रिप्टिंग भाषा प्रयुक्त होती है जैसे कि csh या पर्ल, तो कोडिंग त्रुटियों के परिणामस्वरूप कोड इंजेक्शन जोखिम की संभावना बढ़ जाती है।
कमांड कॉलिंग का आम तौर पर अर्थ है एक नव निर्मित प्रक्रिया का आह्वान. प्रक्रिया को शुरू करने में, परिणाम उत्पन्न करने के वास्तविक कार्य की अपेक्षा अधिक समय तथा मेमोरी खर्च हो सकती है, खासकर जब प्रोग्राम को अभी इंटरप्रिटेट या कम्पाईल करना बाकी है। यदि प्रोग्राम को अक्सर चलाया जाता है तो काम के बोझ से वेब सर्वर जल्दी नष्ट हो सकते हैं। बहरहाल, इस बोझ को कम्पाईल किये हुए CGI प्रोग्रामों का प्रयोग कर के कम किया जा सकता है जैसे कि CGI के साथ पर्ल या अन्य स्क्रिप्टिंग भाषाओँ के स्थान पर C/C++, का प्रयोग किया जा सकता है। प्रदर्शन से सम्बंधित ऐसे मुद्दे आम तौर पर केवल उन मशीनों पर एक चिंता का विषय है जिन पर अत्याधिक कार्यभार होता है।
इसका इलाज़ करने के लिए कई दृष्टिकोण अपनाए जा सकते हैं:किसी भी वेब एप्लीकेशन के लिए सर्वश्रेष्ठ सेटअप एप्लीकेशन के विशिष्ट विवरण, यातायात की मात्रा और लेनदेन की जटिलता पर निर्भर करता है, किसी भी दिए गये काम और समय के बजट का क्रियान्वयन निर्धारित करने के लिए इन विकल्पों का विश्लेषण करने की आवश्यकता है।