是否有可能向我演示范围请求的示例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. iBATIS的 - 请求和会话范围
- 2. 如何spring绑定豆范围与像HTTP请求范围,会话等
- 3. 范围内的HTTP请求
- 4. 跨会话执行php脚本,请求和范围之外
- 5. 具有多个HTTP请求范围
- 6. 什么是对HTTP范围请求
- 7. http请求后更改$范围值
- 8. Python的 - HTTP请求范围不工作
- 9. Http web请求不会保留会话
- 10. 列出由SpringMVC创建的请求和会话范围的bean
- 11. 春季请求和会话范围有什么区别?
- 12. 从会话复制属性到请求范围
- 13. Autofac会话范围
- 14. 带会话密钥的HTTP GET请求
- 15. JSF请求范围形式
- 16. JSF中的请求范围
- 17. 范围请求cxf jaxrs
- 18. Spring Rest Web请求范围
- 19. 在Log4J的请求范围
- 20. 休眠会话范围
- 21. Http请求基本
- 22. 在Rspec请求规范中访问会话变量规范
- 23. 如何在IIS中启用字节范围http请求
- 24. netty HTTP服务器中的支持范围请求
- 25. 如何在http请求中指定范围?
- 26. 最后一个字节的HTTP范围请求
- 27. HTML5视频:修改http范围请求标头
- 28. 通过HTTP范围请求快速检测GIF尺寸
- 29. http请求的HTTP请求
- 30. 在会话/请求范围的bean上调用'destroy'方法的弹簧
几个月前新发布了HTTP/1.1标准版本。它有一个特殊的RFC范围请求,这是比旧规范更可读,包括许多项目的例子:https://tools.ietf.org/html/rfc7233 – Thirler