2011-06-01 10 views
8

हेडर फ़ील्ड Range: bytes=278528- अगर Range गए एक GET अनुरोध करने के लिए सही जवाब क्या समर्थित नहीं है है?HTTP: रेंज असमर्थित होने पर मुझे "रेंज: बाइट्स =" का जवाब कैसे देना चाहिए?

पढ़ना HTTP हेडर परिभाषाओं (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) मुझे लगता है कि मैं कम से कम स्थापित करना चाहिए: Accept-Ranges: none है, लेकिन यह स्पष्ट रूप से कहा गया है कि

ग्राहक हो सकते हैं शामिल संसाधन के लिए इस शीर्ष लेख प्राप्त बिना बाइट दूरी अनुरोध उत्पन्न करते हैं।

तो, एक ग्राहक एक सीमा का अनुरोध करता है, तो, क्या मुझे:

  • बाइट 0 से पूरी फ़ाइल के साथ उत्तर दें?
  • कुछ स्थिति त्रुटि के साथ उत्तर दें? (400/406/416/501) देखें: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
+0

अनन्त विनाश थोड़ा गंभीर लगता है। –

उत्तर

7

जैसा कि आप कहते हैं, आप इसे अनदेखा कर सकते हैं। सटीक होने के लिए:

  • यदि आप इसका समर्थन करते हैं, तो आप 206 आंशिक सामग्री का स्टेटस कोड वापस कर देते हैं और सामग्री-रेंज जैसे उचित शीर्षलेख शामिल करते हैं।
  • आप इसका समर्थन नहीं करते हैं, तो आप सामान्य रूप में एक 200 ठीक लौट आते हैं।

मैंने इसका परीक्षण नहीं किया है, लेकिन कल्पना बहुत स्पष्ट प्रतीत होती है। मैंने यह काम देखा है - एक बाधित डाउनलोड फिर से शुरू करने के लिए wget या curl का उपयोग कर शुरुआत से ठीक से पुनरारंभ होगा यदि सर्वर रेंज हेडर का समर्थन नहीं करता है।

+2

बहुत बुरा ग्राहक भी इसे अनदेखा करता है। यदि आप पूर्ण शरीर के साथ 200 लौटते हैं तो एलजी/मोटोरोला फोन (ओएमएक्सप्लेयर) पर एंड्रॉइड का मीडियाप्लेयर दुर्घटनाग्रस्त हो जाता है :( – Joernsn

0

की उपेक्षा कर अवधियों का नाटक सामग्री (जो बहुत बड़ा है) प्रसारण सेवा या किसी अन्य अस्थिर या अस्वीकार्य पर बनाया जा सकता है। मुझे पता है कि http वीडियो को स्थानांतरित करने के लिए सही प्रोटोकॉल नहीं है, लेकिन सर्वर से एयरप्ले को वीडियो भेजने की कोशिश करें ... एयरप्ले रेंज अनुरोधों का उपयोग करता है ...

0

संभावना http शीर्षलेख की जांच है और यदि वहां है एक सीमा स्ट्रिंग है, उसे पार्स पर्वतमाला के पार्स, गणना छोड़ सकते हैं और पदों, यूआरएल से खुले फ़ाइल धारा ले, तो, छोड़ सकते हैं और ले बाइट्स, इसके बारे में सेटअप प्रतिक्रिया 'ले' के लिए, प्रतिक्रिया और अंत में करीब स्ट्रीम भेज चाहते हैं। रेंज हेडर के साथ प्रतिक्रिया करने के लिए

रेंज को अनदेखा न करें मत भूलना, कभी नहीं है जब आप बड़ी नदियों पर काम कर रहे हैं।

यदि आप नैनोहेटप का उपयोग कर रहे हैं, तो मैं आपको उदाहरण के साथ