2009-05-01 17 views
425

क्या यह ब्राउज़र निर्भर है? साथ ही, विभिन्न वेब स्टैक पर अलग-अलग सीमाएं हैं कि वे अनुरोध से कितना डेटा प्राप्त कर सकते हैं?क्वेरी स्ट्रिंग की अधिकतम संभव लंबाई क्या है?

+0

आप यह भी देख सकते हैं http://stackoverflow.com/questions/417142/what-is-the- अधिकतम- लम्बाई-of-an-url – Xinus

+0

यह केवल अनुरोध प्राप्त करने के लिए है! POST अनुरोधों का अधिकतम आकार (मल्टीपार्ट/फॉर्म-डेटा के साथ या बिना) अज्ञात है! – peterh

उत्तर

796

RFC 2616 (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल - HTTP/1.1) बताता है कि क्वेरी स्ट्रिंग (सेक्शन 3.2.1) की लंबाई की कोई सीमा नहीं है। RFC 3986 यह भी कहता है कि कोई सीमा नहीं है, लेकिन इंगित करता है कि मेजबाननाम DNS सीमाओं (खंड 2.3.3) के कारण 255 वर्णों तक सीमित है।

जबकि विनिर्देश किसी भी अधिकतम लंबाई निर्दिष्ट नहीं करते हैं, वेब ब्राउज़र और सर्वर सॉफ़्टवेयर द्वारा व्यावहारिक सीमा लागू की जाती है। अनुसंधान Boutell.com में पाया के आधार पर:

  • माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर (ब्राउज़र)
    माइक्रोसॉफ्ट कहा गया है कि इंटरनेट एक्सप्लोरर में एक यूआरएल की अधिकतम लंबाई 2,083 वर्ण है, रास्ते में अधिक से अधिक 2,048 पात्रों के साथ यूआरएल का हिस्सा इस से अधिक लंबे समय तक यूआरएल का उपयोग करने के प्रयासों ने इंटरनेट एक्सप्लोरर में एक स्पष्ट त्रुटि संदेश बनाया।

  • माइक्रोसॉफ्ट एज (ब्राउज़र)
    सीमा के आसपास 81,578 वर्ण प्रतीत होता है। URL Length limitation of Microsoft Edge

  • क्रोम
    यह बंद हो जाता है URL प्रदर्शित 64k पात्रों के बाद, लेकिन एक से अधिक 100k पात्रों की सेवा कर सकते हैं। इससे आगे कोई परीक्षण नहीं किया गया था।

  • फ़ायरफ़ॉक्स (ब्राउज़र)
    65,536 वर्ण के बाद, स्थान पट्टी अब Windows फ़ायरफ़ॉक्स 1.5.x. में URL प्रदर्शित करता है हालांकि, लंबे यूआरएल काम करेंगे। 100,000 वर्णों के बाद कोई और परीक्षण नहीं किया गया था।

  • सफारी (ब्राउज़र)
    कम से कम 80,000 वर्ण काम करेंगे। उस से परे परीक्षण की कोशिश नहीं की गई थी।

  • ओपेरा (ब्राउज़र)
    कम से कम 190,000 पात्रों काम करेंगे। 190,000 वर्णों के बाद परीक्षण बंद कर दिया। विंडोज़ के लिए ओपेरा 9 ने पूरी तरह से संपादन योग्य, स्थान पट्टी में कॉपी करने योग्य और पेस्ट करने योग्य यूआरएल को 190,000 वर्णों पर भी प्रदर्शित करना जारी रखा।

  • अपाचे (सर्वर)
    प्रारंभिक लगभग 4000 वर्णों की एक सर्वर URL लंबाई सीमा, जिसके बाद अपाचे एक "413 इकाई बहुत बड़ी है" त्रुटि पैदा करता टकरा वेब ब्राउज़र में अधिकतम यूआरएल लंबाई को मापने के प्रयास किए गए। मौजूदा अप टू डेट अपाचे बिल्ड Red Hat Enterprise Linux 4 में पाया गया था। आधिकारिक अपाचे दस्तावेज़ केवल अनुरोध में एक व्यक्तिगत क्षेत्र पर 8,192-बाइट सीमा का उल्लेख करता है।

  • Microsoft इंटरनेट इन्फ़ॉर्मेशन सर्वर (सर्वर)
    डिफ़ॉल्ट सीमा 16,384 वर्ण है (हाँ, माइक्रोसॉफ्ट के वेब सर्वर लंबे URL माइक्रोसॉफ्ट के वेब ब्राउज़र से स्वीकार करता है)। यह विन्यास योग्य है।

  • पर्ल HTTP :: Daemon (सर्वर)
    8,000 बाइट्स तक काम करेंगे। पर्ल के HTTP :: डेमॉन मॉड्यूल के साथ वेब एप्लिकेशन सर्वर बनाने वाले सभी HTTP अनुरोध शीर्षकों के संयुक्त आकार पर 16,384 बाइट सीमा का सामना करेंगे। इसमें पोस्ट-विधि फॉर्म डेटा, फ़ाइल अपलोड इत्यादि शामिल नहीं हैं, लेकिन इसमें यूआरएल शामिल है। व्यावहारिक रूप से इसके परिणामस्वरूप 413 त्रुटि हुई जब एक यूआरएल 8,000 वर्णों से काफी लंबा था। इस सीमा को आसानी से हटाया जा सकता है। Daemon.pm में 16x1024 की सभी घटनाओं की तलाश करें और उन्हें एक बड़े मूल्य के साथ बदलें। बेशक, यह सेवा हमलों से इनकार करने के लिए आपके जोखिम को बढ़ाता है।

+3

आप "माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर (ब्राउज़र)" के बजाय संस्करण संख्या क्यों नहीं कहते हैं? – Lijo

+0

बाइट्स या कुछ के बजाय चरित्र में सीमा गिनती के लिए धन्यवाद :) समझने में आसान। – sun

+5

ऐसा प्रतीत होता है कि क्वेरी स्ट्रिंग पर डिफ़ॉल्ट आईआईएस सीमा 16,384 वर्णों से काफी कम है - यहां 2048 के रूप में उद्धृत: https://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits – JTech

7

मुझे लगता है कि आप एक यूरी स्ट्रिंग के लिए अधिकतम लंबाई का मतलब है। This मदद कर सकता है।

आम तौर पर एक बार जब यूआरआई अपठनीय हो जाता है क्योंकि वे बहुत लंबे होते हैं, तो इसके बजाय POST अनुरोध का उपयोग करने का समय आता है।

+38

एक POST अनुरोध पर स्विच करना क्योंकि जीईटी अनुरोध में फिट होने के लिए बहुत अधिक डेटा बहुत कम समझ में आता है। –

+0

@ जोहान्स अगर काम नहीं करता है, लेकिन पोस्ट करता है, तो पोस्ट पर स्विच करने का अर्थ क्यों नहीं है? –

+8

@ यूजीन बेर्सोव्स्की: क्योंकि प्राप्त करें और पोस्ट का मतलब अलग-अलग चीजें हैं (रेफरी [HTTP/1.1 विनिर्देश] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html))। –

1

विभिन्न वेब स्टैक http-request की विभिन्न लंबाई का समर्थन करते हैं। मुझे अनुभव से पता है कि सफारी के प्रारंभिक ढेर ने केवल 4000 वर्णों का समर्थन किया था और इस प्रकार उपयोगकर्ता-राज्य की वजह से एएसपीनेट पृष्ठों को संभालने में कठिनाई थी। यह पोस्ट के लिए भी है, इसलिए आपको ब्राउज़र की जांच करनी होगी और देखें कि स्टैक सीमा क्या है। मुझे लगता है कि आप नए ब्राउज़र पर भी एक सीमा तक पहुंच सकते हैं। मुझे याद नहीं है लेकिन उनमें से एक (आईई 6, मुझे लगता है) की 16-बिट सीमा, 32,768 या कुछ की सीमा थी।

0

हालांकि आधिकारिक तौर पर वहाँ कोई सीमा नहीं, कई सुरक्षा विन्यास सिफारिशें राज्य है एक सर्वर पर maxQueryStrings 1024 के एक अधिकतम अक्षरों की सीमा सेट किया जाना चाहिए कि क्वेरी स्ट्रिंग सहित पूरे URL में 2048 की एक अधिकतम करने के लिए सेट किया जाना चाहिए, जबकि वर्ण। यह धीमी डीडीओएस हमलों को रोकने के लिए वेब सर्वर पर धीमी HTTP अनुरोध भेद्यता को रोकने के लिए है।