2010-12-31 16 views
5

में तारांकन की अनुमति देना मुझे अपनी वेबसाइट के यूआरएल में तारांकन (*) की अनुमति देने में परेशानी हो रही है। मैं एएसपी.नेट एमवीसी 2 और .NET 4.0 चला रहा हूं।यूआरएल

यहाँ एक उदाहरण है कि समस्या का वर्णन करता है:

http://mysite.com/profile/view/Nice *

उपयोगकर्ता नाम नाइस * है और ASP.NET का कहना है वहाँ URL में अवैध अक्षर हैं:

Illegal characters in path. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Illegal characters in path. 

मैं कोशिश की है सभी वेब.कॉन्फिग विधियों को मैंने ऑनलाइन देखा है जैसे:

<pages validateRequest="false"> 

और

<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" /> 

तो मेरे सवाल है: यह URL में तारांकन अनुमति देने के लिए संभव है? यदि नहीं, तो .NET में कुछ एन्कोडिंग विधि है जो तारांकन (*) को एन्कोड कर सकती है?

धन्यवाद!

+0

क्या आप HTTP एन्कोडिंग के नियमों को समझते हैं? यदि नहीं, तो वहां से शुरू करें। – JasonTrue

+0

ऐसा लगता है जैसे तारांकन HTTP एन्कोडिंग का हिस्सा नहीं है क्योंकि यह एक आरक्षित चरित्र है। लेकिन यह मेरे सवाल का जवाब नहीं देता है कि कोई समाधान है या नहीं। – raRaRa

+0

आपने अपने प्रश्न का उत्तर दिया है। यह डब्ल्यू 3 द्वारा एक आरक्षित चरित्र है। यदि आप इसके आसपास काम कर सकते हैं तो यह बहुत आरक्षित नहीं होगा। –

उत्तर

2

मेरा समाधान इसे एक क्वेरी स्ट्रिंग में बदलना था।

उदा .:

http://mysite.com/profile/?user=username *

इस तरह यह सिर्फ अच्छा काम करने लगता है।

मुझे पता है कि तारांकन (*) एक आरक्षित चरित्र है और इस प्रकार मुझे उपयोगकर्ता नामों को भी अनुमति नहीं देना चाहिए। लेकिन यह मेरी समस्या हल करता है।

8

http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

अन्य आरक्षित वर्ण

तारांकित ("*", ASCII 2A हेक्स) और विस्मयादिबोधक चिह्न ("!", ASCII 21 हेक्स) विशेष होने के रूप में उपयोग के लिए आरक्षित हैं विशिष्ट योजनाओं के भीतर हस्ताक्षर।

5

तारांकन (*) विशेष अर्थ वाला एक आरक्षित चरित्र है, इसलिए इसे यूआरआई में गलत तरीके से उपयोग नहीं किया जाना चाहिए। इसके बजाय, आपको यूआरआई में डालने से पहले प्रत्येक उपयोगकर्ता नाम percent encode होना चाहिए।

प्रतिशत एन्कोडिंग के तहत, तारांकन चरित्र "% 2A" बन जाता है।

तो पूरा, सही यूआरआई होगा: http://example.com/profile/view/Nice%2A

प्रतिशत एन्कोडिंग उपयोगकर्ता नाम आपके लिए अपने आप मूल उपयोगकर्ता नाम स्ट्रिंग में वापस अनुवाद किया जाना चाहिए।

यह आपके यूआरआई को सर्वर-साइड को सत्यापित करने की अनुमति नहीं देगा, बल्कि क्लाइंट-साइड, जब आपके उपयोगकर्ता इन मेलों को अपने मेल प्रोग्राम में कॉपी और पेस्ट करेंगे।

उदाहरण के लिए, स्टैक ओवरफ़्लो स्वचालित रूप से सुरक्षित, प्रतिशत एन्कोडेड यूआरआई: http: // उदाहरण को हाइपरलिंक करता है। : http: // example.com/profile/?user=username*

तारांकन में शामिल नहीं है कॉम/प्रोफ़ाइल/देखें/नाइस% 2A

लेकिन यह पूरी तरह से असुरक्षित संस्करण हाइपरलिंक नहीं है स्टैक ओवरफ़्लो लिंक - इसलिए आपका उपयोगकर्ता गलत पृष्ठ समाप्त कर देता।

(खेद है कि मैं इस प्रदर्शन कर सकते हैं नहीं - मैं सिर्फ अपने पोस्ट में शामिल दो लिंक की अनुमति दी।)

आप अपने आप को हमेशा प्रतिशत एन्कोडिंग डेटा से मुसीबत के एक महान सौदा बचा सकता है इससे पहले कि आप सम्मिलित एक यूआरआई में

+0

आमतौर पर .NET में इसे करने के लिए उपयोग की जाने वाली विधि UrlEncode है: http://msdn.microsoft.com/en-us/library/zttxte6w.aspx – AaronSieb