Query Parameters और Redirect URIs को URL एन्कोड करें
redirect_uri values, callback URLs और nested parameters को सुरक्षित रूप से एन्कोड करें ताकि आपकी auth या API request टूटना बंद हो जाए।
यह गाइड URL encoding को व्यावहारिक रखती है: redirect flows, query params, scope values और पूरे URL को एन्कोड करने व एक component को एन्कोड करने के बीच का अंतर।
इसे तब उपयोग करें जब
कोई callback URL, nested query string या redirect_uri value बार-बार अस्वीकार या truncate हो रही हो।
पहले क्या जाँचें
जाँचें कि आपने पूरा URL एन्कोड किया था या सिर्फ parameter component। यही अंतर अक्सर टूटे हुए redirects समझाता है।
सामान्य गलती
spaces, plus signs, at symbols और question marks logs में अक्सर harmless लगते हैं, लेकिन raw copy होने पर requests तोड़ देते हैं।
redirect_uri value को encode करें
Nested callback URLs को parameter value के रूप में एन्कोड किया जाना चाहिए, outer request में raw पेस्ट नहीं करना चाहिए।
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Fnext%3D%252Fsettings
scope string एन्कोड करें
OAuth scope values में अक्सर spaces होते हैं जिन्हें reliable transmission के लिए percent-encode करना ज़रूरी है।
scope=read%3Ausers%20write%3Ausers
search या email values संभालें
+, @, / और ? जैसे characters यह संकेत देते हैं कि आप सही component एन्कोड कर रहे हैं।
email=dev%2Balerts%40example.com
callback को पढ़ने योग्य रखें
live tool आपको एक बार में एक value एन्कोड या डिकोड करने देती है, जो तब उपयोगी है जब redirect logs पढ़ना कठिन हो।
https://app.example.com/callback?next=/settings
जब आप पूरे URL की संरचना सुरक्षित रखना चाहते हों, तब encodeURI का उपयोग करें। redirect_uri, state या search query जैसे एक parameter value के लिए encodeURIComponent का उपयोग करें।
- ज़्यादातर auth और API bugs वहाँ से आते हैं जहाँ encodeURIComponent चाहिए होता है लेकिन reserved characters गलती से वैसे ही रह जाते हैं।
Signed requests, OAuth redirects और nested URLs सभी इस बात पर निर्भर करते हैं कि सही layer पर सही component एन्कोड किया गया हो। संदेह हो तो value को अलग करें और पहले उसी का परीक्षण करें।
- जब समस्या query string में नहीं बल्कि request body में हो, तो JSON formatting पर जाएँ।