2009-05-02 8 views
20

क्या कोई औपचारिक प्रतिबंध है कि URL पैरामीटर नामों में कौन से वर्णों की अनुमति है?HTTP यूआरएल - पैरामीटर नामों में वर्णों की अनुमति

मैं RFC3986 ("वर्दी संसाधन पहचानकर्ता (यूआरआई): जेनेरिक सिंटेक्स" पढ़ रहा हूं) लेकिन कोई निश्चित निष्कर्ष नहीं आया।

मैं जानता हूँ कि व्यावहारिक सीमाओं देखते हैं, लेकिन यह वास्तव में की तरह कुछ करने के लिए मना किया जाएगा: जब तक मैं इसे सही ढंग से बचने के रूप में

param with\funny<chars>=some_value

: यूआरएल के लिए

param%20with%1cfunny%3cchars%3e=some_value

उत्तर

9

यूआरआई चश्मा में बच निकले पैरामीटर नामों पर कोई प्रतिबंध नहीं हैं। आपके द्वारा उपयोग किए जाने वाले सर्वर-साइड सॉफ़्टवेयर में प्रतिबंध हो सकते हैं। यह विशेष रूप से सच है यदि आप यूआरआई की व्याख्या करने के लिए "घर का बना" स्क्रिप्ट का उपयोग करते हैं।

+0

यही कारण है कि मैं पूछ रहा हूं ... http://stackoverflow.com/questions/814613/how-to-read-data-from-url-using-javascript - मुझे लगता है कि मेरे उत्तर की आवश्यकता होगी असामान्य स्थितियों में इसे सही बनाने के लिए ओवरहाल। – Tomalak

+0

आह, जो स्थिति को काफी जटिल बनाता है। विशेष रूप से 'और 'का उपयोग करने के रूप में डेलीमीटर के रूप में केवल एक सम्मेलन है; इसके बजाय अन्य का उपयोग किया जा सकता है, उदा। ',' और ';' का उपयोग काफी उपयोग किया जाता था। इसके अलावा, कई सर्वर इंजन (PHP, रेल, ...) नेस्टेड तर्कों का समर्थन करते हैं, इसलिए यह क्वेरी के साथ एक कानूनी यूआरआई होगा: http://example.com/?a=b;c[1]=x;c[2] = y ... बहुत सारे वेब अनुप्रयोग वास्तव में सरणी जैसे डेटा प्राप्त करने के लिए फ़ॉर्म डेटा (विकल्प, चेकबॉक्स ...) के लिए इस क्वेरी नोटेशन का उपयोग करते हैं। –

+0

तो मुझे लगता है कि यह "यूआरएल से पैरामीटर खींचने के लिए कोई भी सही कार्य नहीं है" - जब तक कि आप स्वीकार नहीं कर लेते कि "सी [1] = एक्स" सर्वर-साइड सम्मेलन है, और पैरामीटर आप वास्तव में * क्लाइंट पर "सी [1]" कहा जाता है (जो वास्तव में सही होगा, लेकिन सर्वर साइड प्रोग्रामिंग के आदी लोगों के लिए अजीब आते हैं ...)। – Tomalak

1

वहाँ आरक्षित हैं वर्ण , लेकिन जब तक आप बचें (urlencode) तो आप ठीक होना चाहिए।

उपयोग किए गए ढांचे के आधार पर, यदि आप संदिग्ध मूल्य सबमिट करने का प्रयास करते हैं तो आपको अपवाद मिल सकते हैं। एएसपी.नेट में सामग्री फ़िल्टरिंग है जो अपवाद फेंक देगा यदि आप "असुरक्षित" डेटा, जैसे स्क्रिप्ट या HTML सबमिट करने का प्रयास करते हैं। यह यूआरएल सिंटैक्स द्वारा लागू सीमा या नियम के बजाए ढांचे की एक विशेषता है।

4

आपको RFC2396 भी पढ़ना चाहिए। यह आरएफसी 3 9 86 की तुलना में अधिक जानकारीपूर्ण प्रतीत होता है।

+1

धारा 3.4। ("क्वेरी घटक") में यह है: "क्वेरी घटक संसाधन द्वारा व्याख्या की जाने वाली जानकारी की एक स्ट्रिंग है।" इसका मतलब मूल रूप से "कुछ भी चला जाता है" जैसा मैंने सोचा था। – Tomalak

+0

यह दुर्भाग्य से HTTP विशिष्ट नहीं है। लेकिन मुझे लगता है कि यहां कोई मानक नहीं है, सिर्फ सम्मेलन। – Tomalak

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