是否有可能向我演示範圍請求的示例http會話。 我的意思是什麼是請求和響應頭?樣本http範圍請求會話
回答
以下是Chrome和靜態Web服務器之間的交換,檢索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
Range頭檢測 - 用開放式的範圍內後續請求確認支持。響應返回206個狀態和Content-Range
頭,以指示存在於所述響應體中的字節數:
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
空白的Transfer-Encoding標頭是一個artefact HTTP通信被捕獲的方式,還是有一個真正的HTTP服務器在那裏生成這個頭的空值? – swl10
在第一種情況下,它看起來像服務器返回64657027字節的內容。所以發生了什麼 - 客戶只是丟掉那些內容,然後發出零件的範圍請求真的想要?或者服務器沒有返回任何內容,因爲客戶端消息中的某些內容表示不這麼做。如果是這樣,那是什麼? – Morrie
@Morrie - 它看起來像服務器,知道它本身支持範圍請求,通過「Accept-Ranges:bytes」頭告訴客戶端「我接受範圍請求」,但它也發送資源的內容長度,所以客戶端可以使範圍請求具有上限。就我所知,客戶端消息中沒有任何內容表示這麼做 - 服務器可以選擇以「這裏是整個資源」或「我接受範圍請求」作爲響應 - 這又是「Accept-Ranges」頭的存在。無論如何,這是我的理解。 –
- 1. CDI - 會話範圍 - 每個請求範圍的新會話範圍
- 2. iBATIS的 - 請求和會話範圍
- 3. 如何spring綁定豆範圍與像HTTP請求範圍,會話等
- 4. HTTP會話請求
- 5. 範圍內的HTTP請求
- 6. 訪問會話範圍從請求Bean範圍的bean
- 7. 跨會話執行php腳本,請求和範圍之外
- 8. 具有多個HTTP請求範圍
- 9. 什麼是對HTTP範圍請求
- 10. http請求後更改$範圍值
- 11. Python的 - HTTP請求範圍不工作
- 12. Http web請求不會保留會話
- 13. 可以訪問會話範圍CDI豆從請求範圍CDI豆
- 14. 變化從會話範圍要求
- 15. 春季會話或請求範圍變量
- 16. 從會話複製屬性到請求範圍
- 17. 列出由SpringMVC創建的請求和會話範圍的bean
- 18. 春季請求和會話範圍有什麼區別?
- 19. 無法使用JSTL檢索會話/請求範圍值
- 20. 帶會話密鑰的HTTP GET請求
- 21. HTTP請求之間的休眠會話
- 22. Autofac會話範圍
- 23. PHP會話範圍
- 24. 會話範圍的bean不是一個會話範圍的bean
- 25. JSF請求範圍形式
- 26. 範圍請求cxf jaxrs
- 27. Spring Rest Web請求範圍
- 28. JSF中的請求範圍
- 29. OAuth2請求其他範圍
- 30. 彈簧請求範圍bean
幾個月前新發布了HTTP/1.1標準版本。它有一個特殊的RFC範圍請求,這是比舊規範更可讀,包括許多項目的例子:https://tools.ietf.org/html/rfc7233 – Thirler