URL संवेदनशील क्यों नहीं होगा?
मैं समझता हूं कि एक उत्तेजक (और "शैतान के वकील") प्रकार के अलंकारिक प्रश्न की तरह लग सकता है, लेकिन मुझे लगता है कि यह विचार करना उपयोगी है। HTTP का डिज़ाइन एक "क्लाइंट" है, जिसे हम आमतौर पर "वेब ब्राउज़र" कहते हैं, डेटा के लिए "वेब सर्वर" पूछता है।
कई, कई अलग-अलग वेब सर्वर हैं जो जारी किए गए हैं। Microsoft ने IIS को विंडोज सर्वर ऑपरेटिंग सिस्टम (और अन्य, विंडोज एक्सपी प्रोफेशनल सहित) के साथ जारी किया है। यूनिक्स के पास नग्नेक्स और अपाचे जैसे हैवीवेट हैं, जो कि ओपनबीएसडी के आंतरिक httpd, या थेटपेड, या लाइटटैप जैसे छोटे प्रसाद का उल्लेख नहीं करते हैं। इसके अतिरिक्त, कई नेटवर्क-सक्षम डिवाइस वेब सर्वरों में बनाए गए हैं जिनका उपयोग डिवाइस को कॉन्फ़िगर करने के लिए किया जा सकता है, जिसमें नेटवर्क के लिए विशिष्ट उद्देश्यों के साथ डिवाइस शामिल हैं, जैसे राउटर (कई वाई-फाई एक्सेस प्वाइंट और डीएसएल मोडेम सहित) और प्रिंटर जैसे अन्य डिवाइस। यूपीएस (बैटरी समर्थित निर्बाध बिजली आपूर्ति इकाइयां) जिनमें नेटवर्क कनेक्टिविटी हो सकती है।
तो प्रश्न, "URL केस-संवेदी क्यों हैं?", पूछ रहा है, "वेब सर्वर URL को संवेदनशील होने के कारण क्यों मानते हैं?" और वास्तविक उत्तर यह है: वे सभी ऐसा नहीं करते हैं। कम से कम एक वेब सर्वर, जो काफी लोकप्रिय है, आमतौर पर संवेदनशील नहीं है। (वेब सर्वर IIS है।)
अलग-अलग वेब सर्वर के बीच अलग-अलग व्यवहार का एक प्रमुख कारण शायद सादगी के मामले में उबलता है। वेब सर्वर बनाने का सरल तरीका यह है कि चीजों को उसी तरह किया जाए जैसे कंप्यूटर / डिवाइस का ऑपरेटिंग सिस्टम फाइलों का पता लगाता है। प्रतिक्रिया देने के लिए कई बार, वेब सर्वर एक फ़ाइल का पता लगाते हैं। यूनिक्स उच्च अंत कंप्यूटर के आसपास डिज़ाइन किया गया था, और इसलिए यूनिक्स ने अपरकेस और लोअरकेस अक्षरों को अनुमति देने की वांछनीय कार्यक्षमता प्रदान की। यूनिक्स ने अपरकेस और लोअरकेस को अलग-अलग मानने का फैसला किया क्योंकि, ठीक है, वे अलग हैं। वह सीधी, स्वाभाविक बात है। विंडोज में पहले से निर्मित सॉफ्टवेयर का समर्थन करने की इच्छा के कारण केस-असंवेदनशील होने का एक इतिहास है, और यह इतिहास डॉस में वापस चला जाता है जो केवल लोअरकेस अक्षरों का समर्थन नहीं करता था, संभवतः कम शक्तिशाली कंप्यूटरों के साथ चीजों को सरल बनाने के प्रयास में जो कम मेमोरी का उपयोग करते थे। चूंकि ये ऑपरेटिंग सिस्टम अलग-अलग हैं, परिणाम यह है कि बस-डिज़ाइन किए गए (शुरुआती संस्करण) वेब सर्वर समान अंतर को दर्शाते हैं।
अब, उस पृष्ठभूमि के साथ, यहाँ कुछ विशिष्ट प्रश्नों के उत्तर दिए गए हैं:
जब URL पहली बार डिज़ाइन किए गए थे, तो केस-सेंसिटिविटी को एक फीचर क्यों बनाया गया?
क्यों नहीं? यदि सभी मानक वेब सर्वर केस-असंवेदनशील थे, तो यह इंगित करेगा कि वेब सर्वर मानक द्वारा निर्दिष्ट नियमों के एक सेट का पालन कर रहे थे। बस कोई नियम नहीं था जो कहता है कि मामले को नजरअंदाज करने की जरूरत है। कोई नियम नहीं होने का कारण यह है कि ऐसा नियम होने का कोई कारण नहीं था। अनावश्यक नियम बनाने की जहमत क्यों उठाते हैं?
मैं यह पूछता हूं क्योंकि यह मुझे लगता है (यानी, एक छंटनी) कि मामले-असंवेदनशीलता को अनावश्यक त्रुटियों को रोकने और पाठ के पहले से ही जटिल स्ट्रिंग को सरल बनाने के लिए प्राथमिकता दी जाएगी।
मशीनों को संसाधित करने के लिए URL डिज़ाइन किए गए थे। हालांकि एक व्यक्ति एक पूर्ण URL को एक पता बार में टाइप कर सकता है, जो कि इच्छित डिज़ाइन का एक प्रमुख हिस्सा नहीं था। इरादा डिजाइन यह है कि लोग हाइपरलिंक्स ("पर क्लिक करें") का पालन करेंगे। अगर औसत व्यक्ति ऐसा कर रहे हैं, तो वे वास्तव में परवाह नहीं करते हैं कि अदृश्य URL सरल है या जटिल है।
साथ ही, केस-संवेदी URL होने का एक वास्तविक उद्देश्य / लाभ है (जैसा कि उन अधिकांश URL का विरोध किया गया है जो एक ही पृष्ठ पर इंगित होते हैं, चाहे कोई भी कैपिटलाइज़ेशन क्यों न हो)?
विलियम हे के उत्तर के पांचवें क्रमांक में एक तकनीकी लाभ का उल्लेख किया गया है: वेब ब्राउज़र के लिए वेब सर्वर के लिए थोड़ी सी जानकारी भेजने के लिए URL एक प्रभावी तरीका हो सकता है, और कम प्रतिबंध होने पर अधिक जानकारी शामिल की जा सकती है, इसलिए केस सेंसिटिविटी प्रतिबंध से यह जानकारी कम हो जाएगी कि कितनी जानकारी शामिल की जा सकती है।
हालांकि, कई मामलों में, संवेदनशीलता के मामले में एक सुपर सम्मोहक लाभ नहीं है, जो इस तथ्य से साबित होता है कि आईआईएस आमतौर पर इसके साथ परेशान नहीं करता है।
सारांश में, सबसे सम्मोहक कारण उन लोगों के लिए बस सादगी की संभावना है, जिन्होंने वेब सर्वर सॉफ़्टवेयर डिज़ाइन किया है, विशेषकर यूनिक्स जैसे केस-सेंसिटिव प्लेटफ़ॉर्म पर। (HTTP कुछ ऐसा नहीं था जिसने यूनिक्स के मूल डिज़ाइन को प्रभावित किया, क्योंकि यूनिक्स HTTP से काफी पुराना है।)