URL में प्रतिशत हस्ताक्षर HTTP 400 बैड रिक्वेस्ट त्रुटि का कारण क्यों बनता है?


22

जब मैं अपने वेब ब्राउज़र में किसी वेब पेज के लिए URL को गलत तरीके से लिख रहा हूं तो मैं इस दुर्घटना से लड़खड़ा गया।

विजिटिंग http://example.com/%HTTP HTTP बैड रिक्वेस्ट एरर को क्यों फेंका जाता है? प्रतिशत संकेत के बाद या उससे पहले सर्वर कुछ और की उम्मीद कर रहा है?

ऐसा लगता है कि Apache और Nginx सर्वर के लिए होता है।


जवाबों:


32

संक्षिप्त जवाब

RFC 3986 के अनुसार , एक नंगे %वर्ण वैध URI सिंटैक्स नहीं है; इसके बाद दो सार्थक हेक्साडेसिमल अंक होने चाहिए ।

लंबा जवाब

आपके द्वारा प्राप्त HTTP स्थिति कोड 4xxवर्ग का है:

4xx: Client Error - The request contains bad syntax or cannot be fulfilled

स्रोत: हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) स्थिति कोड रजिस्ट्री

विशेष रूप से, कोड 400को RFC 2616 में इंटरनेट इंजीनियरिंग टास्क फोर्स (IETF) द्वारा परिभाषित किया गया है :

10.4.1 400 खराब अनुरोध

अनुरोध सर्वर द्वारा विकृत सिंटैक्स के कारण समझा नहीं जा सका। ग्राहक बिना संशोधनों के अनुरोध को नहीं दोहराएगा।

स्रोत: RFC 2616 - हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल - HTTP / 1.1

विकिपीडिया का उद्धरण (बोल्ड जोर मेरा):

URI में अनुमत वर्ण या तो आरक्षित या अनारक्षित ( या प्रतिशत-एन्कोडिंग के भाग के रूप में एक प्रतिशत वर्ण ) हैं।

स्रोत: प्रतिशत-एन्कोडिंग - एक यूआरआई में प्रतिशत-एन्कोडिंग

यदि आप एक शाब्दिक %प्रतीक सम्मिलित करना चाहते हैं , तो आपको इसके प्रतिशत-एन्कोडेड प्रतिनिधित्व का उपयोग करने की आवश्यकता है %25:।

आगे की पढाई


मुझे नहीं मिला। अगर मैं '% 25' के साथ '%' चिह्न का मुखौटा लगाता हूं, तो फ़ाइल को सेवा नहीं दी जाएगी, लेकिन 400 त्रुटि हमारे परिदृश्य में डाली जाएगी (Apache -> JKMount -> Tomcat)
13

अगर आपके पास RewriteRule (.*) xyz/$1.htaccess में निम्नलिखित RewriteRule (जहाँ xyz किसी भी फ़ोल्डर का नाम है) है, तो आपको % -2525 के रूप में डबल -कोड करना चाहिए ।
मार्को मार्साला

9

प्रतिशत चिह्न एक वर्ण सम्मिलित करने के लिए है जो सामान्य रूप से url में समर्थित नहीं है। उदाहरण के लिए% 20 एक स्थान के समान है।


4
और खुद एक प्रतिशत चरित्र डालने के लिए, यह है%25
रोबॉटनिक

A +, किसी स्पेस को एनकोड करने का एक शॉर्टकट तरीका है। यदि आप एक वास्तविक प्लस चिह्न चाहते हैं, तो इसके हेक्स कोड का उपयोग करें,% 2B।
फिल पेरी

3
+ एक क्वेरी स्ट्रिंग के भीतर केवल एक स्थान के लिए सही एन्कोडिंग है। % 20 यूआरएल के भीतर कहीं और सही एन्कोडिंग है।
ईडन टाउनसेंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.