2012-03-01 9 views
8

जो मैं वास्तव में समझ में नहीं आता वह '?' का उपयोग करने का लाभ है '&' यूआरएल में के बजाय:यूआरएल में पैरामीटर विभाजक, दुरुपयोग प्रश्न चिह्न

question mark vs ampersand

यह कोई भी नहीं के जीवन को आसान करता है, तो हम पहले विभाजक वर्ण के रूप में एक अलग चरित्र का उपयोग करता है। क्या आप उचित स्पष्टीकरण के साथ आ सकते हैं?

संपादित करें: अधिक शोध के बाद मुझे पता चला कि "" फ़ाइल नाम का एक हिस्सा हो सकता है (शर्तें conditions.html) तो "?" एक अच्छा विभाजक है। लेकिन फिर भी मुझे लगता है कि "?"

question mark as separator

वहाँ "&" जो पहली झलक में स्पष्ट नहीं है प्रयोग करने में कोई लाभ है: विभाजक के लिए (देखने का यूआरएल जनरेटर और पारसर्स बिंदु से) आसान जीवन क्या है?

उत्तर

7

यूआरआई स्पेक (आरएफसी 3 9 86) दृष्टिकोण से, यहां एकमात्र विभाजक "?" है। क्वेरी का प्रारूप अपारदर्शी है; एम्पर्सेंड कुछ ऐसा है जो HTML सबमिशन के लिए उपयोग करता है।

+0

तो वे अलग-अलग समय में विकसित हुए हैं? यूआरआई से पहले एचटीएमएल था? –

+0

हां, वे अलग से विकसित हुए, लेकिन नहीं, यूआरएल पहले यूआरआई (पहले यूआरएल कहा जाता था) से पहले नहीं था। –

+4

तो उत्तर कुछ ऐसा हो सकता है जैसे "एचटीएमएल और यूआरआई अलग से विकसित हुए हैं और एचटीएमएल डेवलपर्स ने इसका उपयोग करने का लाभ नहीं देखा है?" के बजाय पैरामीटर विभाजक के रूप में और "सिवाय इसके कि मैं कहूंगा" ध्यान नहीं दिया गया है "सटीक नहीं है।उनके पास एक अच्छा कारण हो सकता है। –

4

इस आलेख में उत्तर बहुत अधिक है - http://www.skorks.com/2010/05/what-every-developer-should-know-about-urls/। यह बताने के लिए, यहाँ जाता है:

क्वेरी सर्वर पर एक संसाधन के लिए कुछ मानकों को भेजने के लिए पसंदीदा तरीका है। ये कुंजी = मूल्य जोड़े हैं और यूआरएल के बाकी से अलग हैं? (प्रश्न चिह्न) चरित्र और आमतौर पर को & (एम्परसैंड) वर्णों से एक दूसरे से अलग कर दिया जाता है। आपको क्या पता नहीं हो सकता है तथ्य यह है कि उन्हें एक-दूसरे से अलग करना कानूनी है; (सेमी-कोलन) चरित्र भी। निम्न URL बराबर हैं:

http://www.blah.com/some/crazy/path.html?param1=foo&param2=bar

http://www.blah.com/some/crazy/path.html?param1=foo;param2

-1

आरएफसी 3896 (https://www.ietf.org/rfc/rfc3986.txt) को परिभाषित करता है सामान्य और उप सीमांकक ... '?' एक सामान्य है, '&' और ';' उप हैं इस बारे में कल्पना स्पष्ट है।

इस मामले में बाद वाला '?' वर्णों को क्वेरी के हिस्से के रूप में माना जाएगा। यदि क्वेरी पार्सर कड़ाई से spec का पालन करता है, तो यह पूरी क्वेरी को ऐप-गंतव्य पर भेज देगा। यदि ऐप-गंतव्य क्वेरी स्ट्रिंग को इस तरीके से आगे संसाधित करने का विकल्प चुन सकता है जो इसका इलाज करता है? एक पैरा नाम-मूल्य जोड़े डेलीमीटर के रूप में, यह ऐप के डिजाइनरों पर निर्भर है।

मेरा अनुमान है कि यह अक्सर 'बस काम करता है' क्योंकि कोड जो क्वेरी स्ट्रिंग्स को विभाजित करता है और मूल यूरी मिलान के लिए सभी डिलीमीटर का उपयोग करता है: 1) पहली क्वेरी '?' पर विभाजित होती है फिर 2) क्वेरी स्ट्रिंग को चार मिलान सूची का उपयोग करके पार्स किया गया है जिसमें '?' शामिल है (केवल सुविधा) .... यह पहले से ही सर्वव्यापी पार्सिंग पुस्तकालयों में हो सकता है।

+0

कृपया अपने डाउनवॉट्स को समझाएं। – Rondo

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