नमूना http श्रेणी अनुरोध सत्र


91

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


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

जवाबों:


135

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

प्रारंभिक अनुरोध - वीडियो के लिए। 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

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

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

फ़ाइल के अंत (संभवतः अनुगामी मेटाडेटा को पकड़ने के लिए) के बाद की रेंज अनुरोध:

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 संचार पर कब्जा कर लिया गया या वहाँ एक वास्तविक HTTP सर्वर है?
swl10

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

3
@Morrie - यह सर्वर की तरह लगता है, यह जानकर कि स्वयं रेंज अनुरोधों का समर्थन करता है, Accept-Ranges: bytesहेडर के माध्यम से क्लाइंट को "मैं रेंज अनुरोध स्वीकार करता हूं" बताता है , लेकिन यह संसाधन के लिए सामग्री की लंबाई को भी भेजता है ताकि क्लाइंट ऊपरी के साथ रेंज अनुरोध कर सके। बाध्य। क्लाइंट संदेश में कुछ भी नहीं कहता है कि जहां तक ​​मुझे पता है - सर्वर "यहां संपूर्ण संसाधन है" या "मैं स्वीकार करता हूं रेंज अनुरोधों" के साथ जवाब देना चुन सकता है - जो फिर से Accept-Rangesहेडर का अस्तित्व है । यह वैसे भी मेरी समझ है।
साइमन व्हाइटहेड

4
लेकिन पहली प्रतिक्रिया में 64657027 की सामग्री-लंबाई का मतलब यह नहीं है कि वास्तव में हेडर के बाद पेलोड के कई बाइट्स हैं, जो ग्राहक को उपभोग करना होगा क्योंकि कनेक्शन कीप-अलाइव है? मुझे आश्चर्य है कि उस प्रतिक्रिया संदेश में क्या कहा गया है कि वास्तव में कोई पेलोड नहीं है।
मॉरी

1
@ मॉरी-की-लिव-इन क्लाइंट से एक अनुरोध है और क्लाइंट के पास कनेक्शन का उपयोग करने के लिए कोई दायित्व नहीं है। मैंने अभी-अभी अपने काम में निष्कर्ष निकाला है कि, कम से कम क्रोम के लिए, श्रेणी "0-" के साथ पहला GET अनुरोध तुरंत प्राप्त होता है, जैसे ही हेडर अनुरोध का उपयोग करने के बजाय हेडर प्राप्त होता है। मेरा मानना ​​है कि यह किसी भी सर्वर के साथ समस्याओं से बचने का एक तरीका है जो HEAD क्रिया को सही ढंग से लागू नहीं कर सकता है।
जूमलेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.