2011-11-23 13 views
5

एक बहु-भाग (यानी Content-Type=multipart/form-data) फ़ॉर्म में, क्या सीमा सर्वर की सीमा पर ऊपरी सीमा है जिसे HTTP सर्वर को स्वीकार करना चाहिए?एचटीएमएल मल्टीपार्ट फॉर्म - "सीमा" स्ट्रिंग की अधिकतम लंबाई?

जहां तक ​​मेरा बता सकते हैं, प्रासंगिक RFCs कहना 70 वर्ण:

  • RFC2616 (HTTP/1.1) अनुभाग "3.7 मीडिया प्रकार" कहते हैं

    कि Content-Type हैडर में अनुमति दी प्रकार है द्वारा परिभाषित आरएफसी 15 9 0 (मीडिया प्रकार पंजीकरण प्रक्रिया)।
  • आरएफसी 1590 अद्यतन आरएफसी -1521 (एमआईएमई)।
  • आरएफसी 1521 कहता है कि एक सीमा "70 से अधिक वर्ण नहीं होनी चाहिए, दो प्रमुख हाइफ़न की गणना नहीं करनी चाहिए"।
  • वही पाठ आरएफसी 2046 में भी दिखाई देता है जो माना जाता है कि आरएफसी 1521 पर अप्रचलित है।

तो क्या मैं निश्चित कर सकता हूं कि आज सभी प्रमुख HTTP/1.1 ब्राउज़र इस सीमा का पालन करते हैं? क्या इस सीमा को तोड़ने के लिए ज्ञात कोई ब्राउज़र (या अन्य HTTP क्लाइंट/पुस्तकालय) हैं?

क्या कोई अन्य स्पेक या आम नियम-थंब है, मुझे याद आ रही है कि स्ट्रिंग कम 70 वर्णों से कम होगी? क्रोम (ium) में मुझे ऐसा कुछ मिलता है: ----WebKitFormBoundaryLu4dNSGEhJZUgoe5, जो स्पष्ट रूप से 70 वर्णों से छोटा है।

मैं इस सवाल से पूछ रहा हूं क्योंकि मेरा सर्वर बेहद मेमोरी-बाधित वातावरण में चल रहा है, इसलिए "संपूर्ण हेडर स्ट्रिंग को पकड़ने के लिए पर्याप्त बफर मॉलोक" एक आदर्श उत्तर नहीं है।

+0

आप ऊपरी सीमा के लिए पूछते हैं। बेशक यह संभव है कि आपको पूर्ण ऊपरी सीमा न मिले लेकिन कम (क्रोम सीमा से संबंधित)। –

+0

यदि आप AJAX का उपयोग करते हैं और सीधे अपनी PHP फ़ाइल में डेटा को संसाधित करते हैं तो –

+0

"संपूर्ण हेडर स्ट्रिंग को दबाएं" में कोई समस्या नहीं होनी चाहिए? पूरे हेडर, अगर आपको केवल सीमा की आवश्यकता है? –

उत्तर

5

जैसा कि आप ध्यान देते हैं, RFC 2046 ने एमआईएमई स्पेक को अपडेट किया है, लेकिन अधिकतम सीमा स्ट्रिंग को 70 वर्णों तक सीमित रखा है, दो प्रमुख हाइफ़न की गणना नहीं।

मुझे लगता है कि यह एक उचित धारणा है कि सभी प्रमुख ब्राउज़रों (और सभी एमआईएमई-उपयोग करने वाले क्लाइंट, जैसे मेल प्रोग्राम) के बाद spec का पालन किया जाता है क्योंकि अन्यथा मल्टीपार्ट डेटा के आसपास गुजरना वास्तव में बहुत जोखिम भरा होगा।

यह सुनिश्चित हो, मैं प्रयोगात्मक यह आप के लिए यह सत्यापित किए जाने के नवीनतम संस्करण का उपयोग कर:

  • कर्ल: ----------------------------5a56a6c893f2 (40)
  • क्रोम 30 (वेबकिट): ----WebKitFormBoundarym0vCJKBpUYdCIWQG (38)
  • सफारी 6 (वेबकिट, और एक ही क्रोम के रूप में): ----WebKitFormBoundaryFHUXvJBZwO2JKkNa (38)
  • फ़ायर्फ़ॉक्स 24: ---------------------------7096603861379320641089344535 (55)
  • आईई 10: ---------------------------7dd1961640278 (40) - एक ही कर्ल के रूप में तकनीक !
  • अपाचे HttpClient: -----------------------------1294919323195 (42)

इस प्रकार न केवल हर प्रमुख ब्राउज़र/ग्राहक पालन करती है, लेकिन आप सभी की सैद्धांतिक अधिकतम से बफर प्रति सीमा प्रति 15 आवंटित बाइट्स को बचाने के लिए अनुमति होगी। यदि आप उपयोगकर्ता एजेंट पर बारीकी से स्विच कर सकते हैं, तो आप और भी अधिक प्रदर्शन निचोड़ सकते हैं।;-)

+0

उपयोगकर्ता-एजेंट पर स्विच करें? क्या आप गंभीर हैं? –

+0

इतना गंभीर नहीं है। – mjk

संबंधित मुद्दे