Aralık istekleriyle örnek bir http oturumu göstermek mümkün mü? Demek istediğim, istek ve yanıt başlıkları ne olurdu?
Aralık istekleriyle örnek bir http oturumu göstermek mümkün mü? Demek istediğim, istek ve yanıt başlıkları ne olurdu?
Yanıtlar:
Aşağıdaki değişim, bir MP4 videosunun alınmasıyla Chrome ile statik bir web sunucusu arasındadır.
İlk istek - video için. Accept-Ranges
Sunucunun aralık başlığı desteğine sahip olduğunu belirtmek için yanıt başlığına dikkat edin:
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
Önceki yanıttaki aralık başlığı algılandı - desteği onaylamak için açık uçlu aralıkla sonraki istek. Yanıt Content-Range
, yanıt gövdesinde bulunan baytları belirtmek için 206 durumu ve başlığı döndürür :
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
Dosyanın sonunu yakalamak için sonraki aralık isteği (muhtemelen sondaki meta verileri yakalamak için):
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
Kullanıcı, indirilen aralığın ötesinde video ilerleme çubuğunu tıklar - seçilen konumdan oynatmaya başlamak için bir aralık isteği gönderilir:
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
Accept-Ranges: bytes
başlık aracılığıyla "aralık isteklerini kabul ediyorum" diyor , ancak aynı zamanda kaynak için içerik uzunluğunu da gönderiyor, böylece müşteri bir üst ciltli. İstemci mesajındaki hiçbir şey, bildiğim kadarıyla bunu yapmamayı söylemiyor - sunucu, "kaynağın tamamı burada" veya "Aralık isteklerini kabul ediyorum" şeklinde yanıt vermeyi seçebilir - ki bu da yine Accept-Ranges
başlığın varlığıdır . Zaten benim anladığım bu.