क्वेरी स्ट्रिंग पैरामीटर को सही तरीके से एन्कोड करना
टूल में दो मोड हैं। घटक (encodeURIComponent) किसी एक पैरामीटर नाम या मान के लिए है; पूर्ण URL (encodeURI) ऐसे पूरे URL के लिए है जिसकी संरचना पहले से सही हो। दोनों को मिला देना टूटी क्वेरी स्ट्रिंग का सबसे आम कारण है।
हल किया गया उदाहरण
पूर्ण URL मोड मान के अंदर & को रहने देता है, इसलिए सर्वर एक की जगह दो पैरामीटर पढ़ता है।
- इनपुट
- https://example.com/search?q=salt & pepper&page=2
- परिणाम ·
encodeURI() - https://example.com/search?q=salt%20&%20pepper&page=2
सर्वर जो पैरामीटर पढ़ता है
- "q" = "salt "
- " pepper" = ""
- "page" = "2"
मान को पहले घटक मोड में एन्कोड करने से वह एक ही पैरामीटर बना रहता है।
- इनपुट
- salt & pepper
- परिणाम ·
encodeURIComponent() - salt%20%26%20pepper
https://example.com/search?q=salt%20%26%20pepper&page=2
सर्वर जो पैरामीटर पढ़ता है
- "q" = "salt & pepper"
- "page" = "2"
घटक और पूर्ण URL मोड की वर्ण-दर-वर्ण तुलना
| वर्ण | घटक | पूर्ण URL |
|---|---|---|
| : | %3A | : |
| / | %2F | / |
| ? | %3F | ? |
| # | %23 | # |
| & | %26 | & |
| = | %3D | = |
| + | %2B | + |
| ␠ | %20 | %20 |
| é | %C3%A9 | %C3%A9 |
टूल इसे कैसे संभालता है
- हर पैरामीटर नाम और मान को अलग-अलग घटक मोड में एन्कोड करें, जो & = ? # + और / को एस्केप करता है।
- एन्कोड किए गए जोड़ों को नाम=मान के रूप में & से जोड़ें और नतीजे को URL में ? के बाद लगाएँ।
- पूर्ण URL मोड का उपयोग केवल पूरे URL पर करें: यह : / ? # & = + को जस का तस रखता है, इसलिए इन्हें रखने वाले मान की रक्षा नहीं कर सकता।