2011-11-28 18 views
82

क्या मुझे रेंज अनुरोधों के साथ नमूना http सत्र दिखाना संभव है। मेरा मतलब है कि अनुरोध और प्रतिक्रिया शीर्षलेख क्या होगा?नमूना http रेंज अनुरोध सत्र

+2

कुछ महीने पहले नया HTTP/1.1 मानक का संस्करण प्रकाशित किया गया था। इसमें रेंज अनुरोधों के लिए एक विशेष आरएफसी है, यह पुरानी कल्पना से बहुत अधिक पठनीय है, जिसमें कई वस्तुओं के उदाहरण शामिल हैं: https://tools.ietf.org/html/rfc7233 – Thirler

उत्तर

128

निम्न विनिमय क्रोम और एक स्थिर वेब सर्वर के बीच है, एमपी 4 वीडियो पुनर्प्राप्त करना।

प्रारंभिक अनुरोध - वीडियो के लिए। नोट Accept-Ranges प्रतिक्रिया हेडर सर्वर रेंज हैडर समर्थन हासिल है इंगित करने के लिए:

GET /BigBuckBunny_320x180.mp4 
     Cache-Control: max-age=0 
     Connection: keep-alive 
     Accept-Language: en-GB,en-US,en 
     Host: localhost:8080 
     Range: 
     Accept: text/html,application/xhtml+xml,application/xml,*/* 
     User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ... 
     Accept-Encoding: gzip,deflate,sdch 
     Accept-Charset: ISO-8859-1,utf-8,* 
200 OK 
     Content-Type: video/mp4 
     Connection: keep-alive 
     Last-Modified: Wed,14 Dec 2011 15:50:59 GMT 
     ETag: A023EF02BD589BC472A2D6774EAE3C58 
     Transfer-Encoding: 
     Content-Length: 64657027 
     Accept-Ranges: bytes 
     Server: Brisket/1.0.1 
     Date: Wed,14 Dec 2011 16:11:24 GMT 

पिछले जवाब में रेंज हैडर का पता चला - समर्थन पुष्टि करने के लिए ओपन एंडेड श्रृंखला के साथ अनुवर्ती अनुरोध।

GET /BigBuckBunny_320x180.mp4 
     Connection: keep-alive 
     Accept-Language: en-GB,en-US,en 
     Host: localhost:8080 
     Range: bytes=0- 
     Accept: */* 
     User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ... 
     Referer: http://localhost:8080/BigBuckBunny_320x180.mp4 
     Accept-Encoding: identity 
     Accept-Charset: ISO-8859-1,utf-8,* 
206 Partial Content 
     Content-Type: video/mp4 
     Connection: keep-alive 
     Last-Modified: Wed,14 Dec 2011 15:50:59 GMT 
     ETag: A023EF02BD589BC472A2D6774EAE3C58 
     Transfer-Encoding: 
     Content-Length: 64657027 
     Accept-Ranges: bytes 
     Server: Brisket/1.0.1 
     Date: Wed,14 Dec 2011 16:11:25 GMT 
     Content-Range: bytes 0-64657026/64657027 

बाद सीमा अनुरोध फ़ाइल के अंत पर कब्जा करने के (शायद कब्जा करने के लिए अनुगामी मेटाडाटा):: प्रतिक्रिया एक 206 स्थिति और Content-Range हैडर बाइट्स प्रतिक्रिया शरीर में मौजूद इंगित करने के लिए देता है

GET /BigBuckBunny_320x180.mp4 
     Connection: keep-alive 
     Accept-Language: en-GB,en-US,en 
     Host: localhost:8080 
     Range: bytes=64312833-64657026 
     Accept: */* 
     If-Range: A023EF02BD589BC472A2D6774EAE3C58 
     User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ... 
     Referer: http://localhost:8080/BigBuckBunny_320x180.mp4 
     Accept-Encoding: identity 
     Accept-Charset: ISO-8859-1,utf-8,* 
206 Partial Content 
     Content-Type: video/mp4 
     Connection: keep-alive 
     Last-Modified: Wed,14 Dec 2011 15:50:59 GMT 
     ETag: A023EF02BD589BC472A2D6774EAE3C58 
     Transfer-Encoding: 
     Content-Length: 344194 
     Accept-Ranges: bytes 
     Server: Brisket/1.0.1 
     Date: Wed,14 Dec 2011 16:11:25 GMT 
     Content-Range: bytes 64312833-64657026/64657027 

डाउनलोड की गई सीमा से वीडियो प्रगति पट्टी में उपयोगकर्ता क्लिक - चयनित स्थिति से खेलना शुरू करने के लिए एक रेंज अनुरोध जारी किया जाता है:

GET /BigBuckBunny_320x180.mp4 
     Connection: keep-alive 
     Accept-Language: en-GB,en-US,en 
     Host: localhost:8080 
     Range: bytes=1073152-64313343 
     Accept: */* 
     If-Range: A023EF02BD589BC472A2D6774EAE3C58 
     User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 ... 
     Referer: http://localhost:8080/BigBuckBunny_320x180.mp4 
     Accept-Encoding: identity 
     Accept-Charset: ISO-8859-1,utf-8,* 
206 Partial Content 
     Content-Type: video/mp4 
     Connection: keep-alive 
     Last-Modified: Wed,14 Dec 2011 15:50:59 GMT 
     ETag: A023EF02BD589BC472A2D6774EAE3C58 
     Transfer-Encoding: 
     Content-Length: 63240192 
     Accept-Ranges: bytes 
     Server: Brisket/1.0.1 
     Date: Wed,14 Dec 2011 16:11:25 GMT 
     Content-Range: bytes 1073152-64313343/64657027 
+7

क्या खाली स्थानांतरण-एन्कोडिंग हेडर एक आर्टेफैक्ट है जिस तरह से HTTP संचार पर कब्जा कर लिया गया था या क्या वहां कोई वास्तविक HTTP सर्वर है जो इस शीर्षलेख के लिए खाली मान उत्पन्न कर रहा है? – swl10

+7

पहले मामले में, ऐसा लगता है कि सर्वर सामग्री के 64657027 बाइट्स लौट रहा है। तो क्या हो रहा है - क्या क्लाइंट सिर्फ उस सामग्री को फेंक रहा है, और उसके बाद भागों के लिए एक रेंज अनुरोध जारी करना वास्तव में चाहता है? या क्या सर्वर किसी भी सामग्री को वापस नहीं कर रहा है क्योंकि ग्राहक के संदेश में कुछ ऐसा कहता है कि ऐसा न करें। यदि ऐसा है, तो ये क्या है? – Morrie

+2

@ मॉरी - यह सर्वर की तरह लगता है, यह जानकर कि वह रेंज अनुरोधों का समर्थन करता है, क्लाइंट को "स्वीकृति-रेंज: बाइट्स हेडर" के माध्यम से "मैं रेंज अनुरोध स्वीकार करता हूं" बताता हूं, लेकिन यह संसाधन के लिए सामग्री की लंबाई भी भेजता है ताकि ग्राहक ऊपरी बाउंड के साथ रेंज अनुरोध कर सकता है। क्लाइंट संदेश में कुछ भी नहीं कहता है कि जहां तक ​​मुझे पता है - सर्वर "संपूर्ण संसाधन है" या "मैं रेंज अनुरोध स्वीकार करता हूं" के साथ जवाब देना चुन सकता हूं - जो कि 'स्वीकृति-रेंज' शीर्षलेख का अस्तित्व है । वैसे भी यह मेरी समझ है। –

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