URL किन हिस्सों से बनता है, और URL एन्कोडिंग क्या करती है?
URL में स्कीम, अथॉरिटी (होस्ट और पोर्ट), पाथ, key=value जोड़ों की वैकल्पिक क्वेरी स्ट्रिंग और वैकल्पिक फ़्रैगमेंट होता है (RFC 3986)। URL के अंदर अर्थ रखने वाले कैरेक्टर — स्पेस, &, =, /, ? और ASCII से बाहर का सब कुछ — परसेंट-एन्कोड होने चाहिए (स्पेस %20 बनता है) ताकि रिसीवर डेटा और संरचना में फ़र्क कर सके। ब्राउज़र URL पार्स और सीरियलाइज़ करते समय WHATWG URL Standard मानते हैं।
hostname सिर्फ़ डोमेन या IP है, host उसमें ग़ैर-डिफ़ॉल्ट port जोड़ता है, और origin उसमें scheme जोड़ता है; क्रेडेंशियल, path, query और fragment कभी origin का हिस्सा नहीं होते।पार्स करने के बाद href
भाग 1:https://
origin: जिसकी तुलना CORS और same-origin policy करते हैं
भाग 1:https://
- 3–4
hostname: सिर्फ़ डोमेन - 3–5
host:hostname+ ग़ैर-डिफ़ॉल्ट port
- 1
protocol(स्कीम)इसका डिफ़ॉल्ट port 443 है - 2
username:password(क्रेडेंशियल)टूल चेतावनी देता है: ब्राउज़र इन्हें हटाते हैं, और ये लॉग व हिस्ट्री में लीक होते हैंसावधानी - 3
subdomain(सबडोमेन)hostname में रजिस्ट्रेबल डोमेन से पहले का हिस्सा - 4
registrable domain(रजिस्ट्रेबल डोमेन)अनुमानित:co.ukको एक suffix गिना जाता है - 5
portडिफ़ॉल्ट 443 नहीं है, इसलिए बना रहता है - 6
pathname(path)/catalog/../searchलिखा गया था;../सेगमेंट हल किया गया - 7
search(query)tagदोहराया गया है; डिकोड की गई वैल्यू:q=café · tag=new · tag=sale - 8
hash(fragment)सर्वर तक कभी नहीं जाता: ब्राउज़र में ही रहता है
पेज का उदाहरण, ठीक वैसे बँटा हुआ जैसा टूल का पार्सर सामान्यीकरण के बाद बताता है।
URL पार्सर कैसे इस्तेमाल करें
- URL पेस्ट करें (scheme वैकल्पिक है — न देने पर https:// मान लिया जाता है)।
- घटकों की तालिका पढ़ें; नोट वाला कॉलम डिफ़ॉल्ट वैल्यू, IDN रूप और ख़ास मामले समझाता है।
- अलग-अलग पैरामीटर पर काम करने के लिए क्वेरी तालिका या JSON व्यू खोलें।
URL पार्सर की खूबियाँ
- ब्राउज़र जैसी ही WHATWG-अनुरूप पार्सिंग, जिसमें scheme, host, port और dot सेगमेंट का सामान्यीकरण शामिल है
- घटकों की तालिका: href, protocol, क्रेडेंशियल, origin, host, hostname, port, path, query, fragment, रजिस्ट्रेबल डोमेन, सबडोमेन और TLD
- डिकोड किए हुए path सेगमेंट और क्वेरी तालिका — पोज़िशन, डिकोड की गई key/value और कच्चे रूप के साथ
- अंतरराष्ट्रीय डोमेन नाम उनके punycode (xn--) रूप के बगल में यूनिकोड में दिखाए जाते हैं
- एम्बेडेड क्रेडेंशियल, सादे HTTP, बहुत लंबे URL और लेबल पर चेतावनियाँ; सामान्यीकरण से क्या बदला, उसके नोट
- पूरी संरचना का JSON व्यू, ताकि उसे कॉपी करके टेस्ट में डाला जा सके
URL पार्सर का उदाहरण
एक जटिल URL को तोड़कर देखना
इनपुट:
https://user:pw@shop.example.co.uk:8443/catalog/../search?q=caf%C3%A9&tag=new&tag=sale#resultsआउटपुट:
href: https://user:pw@shop.example.co.uk:8443/search?q=caf%C3%A9&tag=new&tag=sale#results
origin: https://shop.example.co.uk:8443 · hostname: shop.example.co.uk · port: 8443
registrable domain: example.co.uk · subdomain: shop
query: q=café, tag=new, tag=sale (repeated) · hash: #results (never sent)
Warning: the URL embeds credentials.URL पार्सर के बारे में अक्सर पूछे जाने वाले सवाल
host और hostname में क्या अंतर है?
hostname सिर्फ़ डोमेन या IP होता है (example.com); host में ग़ैर-डिफ़ॉल्ट port भी शामिल रहता है (example.com:8443)। origin में scheme, hostname और port तीनों मिलते हैं और CORS तथा same-origin policy इसी की तुलना करते हैं।
पार्स करने के बाद URL बदल क्यों गया?
पार्सर ठीक ब्राउज़र की तरह सामान्यीकरण करता है: scheme और host छोटे अक्षरों में करता है, डिफ़ॉल्ट port हटाता है, ../ सेगमेंट हल करता है, ख़ाली path के आगे स्लैश जोड़ता है और अनुमति से बाहर के कैरेक्टर percent-encode करता है। नोट में सारे बदलाव गिनाए जाते हैं।
अंतरराष्ट्रीय डोमेन नाम कैसे दिखाए जाते हैं?
ग़ैर-ASCII कैरेक्टर वाले होस्ट href में punycode (xn--…) में बदल दिए जाते हैं, और टूल उसके बगल में यूनिकोड रूप दिखाता है ताकि आप जाँच सकें कि यह किसी दूसरे डोमेन की हमशक्ल नक़ल तो नहीं है।
क्या fragment (#…) सर्वर तक जाता है?
नहीं। # के बाद का सब कुछ ब्राउज़र में ही रहता है और क्लाइंट-साइड राउटर तथा एंकर उसे इस्तेमाल करते हैं। टूल इसे उसी तरह चिह्नित करता है।
तकनीकी नोट्स
इंजन प्लेटफ़ॉर्म की URL क्लास (हर आधुनिक ब्राउज़र, Node और Workers में उपलब्ध) को लपेटता है और जो उसमें नहीं है वह जोड़ देता है: दिखाने के लिए RFC 3492 के अनुसार punycode डिकोडिंग, आम बहु-हिस्सों वाले suffix की सूची से रजिस्ट्रेबल डोमेन का अनुमानित विभाजन, और संरचित क्वेरी पार्सिंग।
संदर्भ
- RFC 3986: Uniform Resource Identifier (URI): Generic SyntaxURI के भाग (स्कीम, अथॉरिटी, पाथ, क्वेरी, फ़्रैगमेंट), रिज़र्व्ड कैरेक्टर और परसेंट-एन्कोडिंग।
- URL Standardब्राउज़र वास्तव में URL को कैसे पार्स, सीरियलाइज़ और एन्कोड करते हैं, application/x-www-form-urlencoded सहित।