2012-06-01 5 views
11

में एकाधिक हैश संकेत या शायद आप इसे "तेज" - # प्रतीक कहते हैं।यूआरएल

मैं एक उदाहरण में आया हूं, जहां #! और # एक ही यूआरएल में एक साथ प्रयोग किया जाता है। आरएफसी समेत अन्य लेख पढ़ने से, मैं समझ नहीं पा रहा हूं कि यह एक कानूनी संयोजन है या नहीं। इस तरह के पेज का सामना करते समय मोज़िला ब्राउज़र (इस मामले में आइसवेसेल) यूआरएल को 2 # के रूप में प्रदर्शित करता है, जबकि क्रोम केवल एक प्रदर्शित करता है, लेकिन जल्द ही बाद में मर जाता है (पृष्ठ वाला टैब अनुत्तरदायी और दुर्घटनाग्रस्त हो जाता है - लेकिन यह कनेक्ट नहीं हो सकता है) ।

अब, मेरा सवाल यह है कि, क्या यह एक यूआरएल दोनों में होना कानूनी है, क्या यह कानूनी और अनावश्यक (सामान्यीकृत होना चाहिए), या यह मोज़िला ब्राउज़र में बस एक बग है? तो, मान लीजिए कि मैं एक AJAX अनुरोध कर रहा हूं, या ब्राउज़र इतिहास नेविगेट करने का प्रयास कर रहा हूं - अगर मुझे इस स्थिति का सामना करना पड़ता है तो मुझे क्या करना चाहिए?

double hash in url

RFC-3986: http://tools.ietf.org/html/rfc3986#section-3.4 है, जो यह स्पष्ट किया जाना चाहिए ... बस मामले में।

इसके अलावा: https://developers.google.com/webmasters/ajax-crawling/docs/specification Google क्रॉलर चीजों को कैसे देखते हैं।

उत्तर

10

एक टुकड़े के लिए प्रारूप केवल स्लेश, प्रश्न चिह्न, और pchar एस की अनुमति देता है। यदि आप आरएफसी देखते हैं, तो आप देखेंगे कि हैश मार्क वैध pchar मान्य नहीं है।

हालांकि, ब्राउज़रों अपनी पूरी कोशिश करेंगे, दोहराने हैश इलाज गैर मान्य URL को पढ़ने के लिए के रूप में आप

के लिए window.location.hash का मूल्य की जाँच करके देख सकते हैं (आईई, फ़ायरफ़ॉक्स में, और क्रोम) जैसे कि वे भाग निकले कर रहे हैं
http://www.example.com/hey#foo#bar 

जो एक ही window.location.hash के लिए

http://www.example.com/hey#foo%23bar 
+0

नहीं, एबीएनएफ यह स्पष्ट करता है कि आप टुकड़े में एक अनचाहे "#" नहीं हो सकते हैं। –

+0

आह, तो फिर यह ब्राउज़र के एक मामले है जो एकाधिक हैंश का इलाज करके वैधता को मजबूर कर रहा है जैसे कि वे बच निकले थे। – apsillers

+0

@ जुलिएन ने आरएफसी से ब्राउज़र व्यवहार को अलग करने के लिए संपादित किया। – apsillers

2

यह कानूनी @apsillers उल्लेख किया जा सकता है। लेकिन जब तक आवश्यक हो, मैं इसे तब तक टालना चाहूंगा क्योंकि यह यूआरएल से संबंधित एक निश्चित भ्रम पैदा कर सकता है।

यूआरएल इस तरह का:

http://www.example.com/hey#foo#bar 

वास्तव में मेरे लिए भ्रामक लगता है और नियमित रूप से उपयोगकर्ताओं के लिए और भी अधिक भ्रमित हो जाएगा और हो सकता है खोज इंजन।