HTTP报文内的HTTP信息之获取部分内容的范围请求

以前,用户不能使用现在这种高速的带宽访问互联网。当时,下载一个尺寸稍大的图片或文件就已经很吃力了。如果下载过程中遇到网络中断的情况,那就必须重头开始。为了解决上述问题,需要一种可恢复的机制。所谓恢复是指能从之前下载中断处恢复下载。

要实现这功能需要指定下载的实体范围。像这样,指定范围发送的请求叫做范围请求Range Request)。对一份10000字节大小的资源,如果使用范围请求,可以只请求5001-10000字节内的资源。

执行范围请求时,会用到首部字段Range来指定资源的byte范围。byte范围的指定形式如下:

  • 5000-10000字节——Range: bytes=5000-10000
  • 从5001字节到之后的全部——Range: bytes=5001-
  • 从一开始到3000字节和5000-7000字节的多重范围——Range: bytes=-3000,5000-7000

针对范围请求,响应会返回状态码为206 Partial Content的响应报文。另外,对于多重范围的范围请求,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文。如果服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容。

时间: 2024-08-06 21:41:21

HTTP报文内的HTTP信息之获取部分内容的范围请求的相关文章

(第三章,第四章)http报文内的http信息,返回结果的http状态码

第三章 http报文内的http信息 用于http协议交互的信息被称为http报文,包括请求报文和响应报文. 1.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的,会消耗更多的cpu资源. 2.压缩传输的内容编码: 内容编码后的实体由客户端接受并负责解码. 3.分割发送的分块传输编码 在传输大量数据时,通过数据分割成多块,能够让浏览器逐步显示页面. 4.获取部分内容的范围请求: 可以处理大文件突然下载中断的问题. 5.内容协商返回最合适的内容 比如根据浏览器

HTTP知识普及系列:HTTP报文内的HTTP信息

HTTP报文是用于HTTP协议交互的信息. 请求报文和响应报文的结构: 请求行 状态行 首部字段 通用首部 请求首部 响应首部 实体首部 其他 常用内容编码的几种方式 gzip(GNU zip) compress (UNIX系统的标准压缩) deflate (zlib) identity (不进行编码) 把实体主体分块的功能成为分块传输编码,每一块都会用十六进制来标记块的大小,实体主体的最后一块会使用“0(CR+LF)” 获取部分内容的范围请求,要实现该功能需要指定下载的实体范围.如果服务器无法

HTTP报文内的HTTP信息

1.HTTP报文 用于HTTP协议交互的信息.请求端对应请求报文:响应端(服务端)对应响应报文. 报文本身由多行数据构成的字符串文本,主要有报文首部和报文主体两块,以(CR+LF)空行来划分,报文主体不是一定要有. 报文首部包括5部分:请求行/状态行,请求首部字段/响应首部字段,通用首部字段,实体首部字段.其他. 请求行:用于请求的方法,请求URL和HTTP版本: 状态行:响应结果的状态码,原因短语和HTTP版本: 首部字段:请求和响应的各种条件和属性的各类首部: 其他:HTTP的RFC中未定义

HTTP报文内的HTTP信息之编码提升传输速率

HTTP在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率.通过在传输时编码,能有效地处理大量的访问请求.但是,编码的操作需要计算机来完成,因此会消耗更多的CPU等资源. 报文主体和实体主体的差异 报文(message):是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输. 实体(entity):作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体组成. HTTP报文的主体用于传输请求或响应的实体主体.通常,报文主体等于实体主体.只有当传输

HTTP报文内的HTTP信息之内容协商返回最合适的内容

同一个Web网站有可能存在着多份相同内容的页面.比如英语版和中文版的Web页面,它们内容上虽相同,但使用语言却不同.当浏览器的默认语言为英语或中文,访问相同URL的Web页面时,则会显示对应的英语版或中文版的Web页面.这样的机制称为内容协商(Content Negotiation). 内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源.内容协商会以响应资源的语言,字符集,编码方式等作为判断的基准. 包含在请求报文中的某些首部字段(如下)就是判断的基准(这些

通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构

原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html 写于2013年7月8日,译文如下: “可以解决推特所面临的挑战”的玩具般的方案是一个常用在扩展性上的比喻.每个人都觉得推特很容易实现.稍微具备一些系统架构的知识我们就可以构建一个推特,就这么简单.但是根据推特软件开发部门的VP Raffi Krikorian在 Timelin

vc++基础班[24]---系统各种路径信息的获取

------------------------------------------ Begin ---------------------------------------- ①.Windows.System32.temp 等目录的获取: TCHAR szPath[MAX_PATH] = {0}; GetSystemDirectory(szPath, MAX_PATH); //C:\WINDOWS\system32 GetWindowsDirectory(szPath, MAX_PATH);

POST信息模拟登录获取页面内容

最近项目里有一个是要模拟登录后,访问固定页面获取内容的要求,一开始用JQ AJAX好像不支持跨域请求.后使用.net中HttpWebRequest对象来获取.一开始访问总是无法在第二个页面正常访问,好像没通过登录验证,用postman模拟提交正常,后查询出原是忘记在第二次请求没把cookies关联上,关联上后请求正常. string wurl=""; string username="haxinet"; string userpwd="haxinet&qu

python之7-3对象的信息/方法获取

我们可以用dir()来获取一个类,一个模块,一个字符串的信息/方法 例如: #可以列出Image模块的方法 >>import Image >>dir(Image) #列出字符串abc的信息,字符串abc其实是类str,也就是列出了str的方法 >>dir('abc') #那么应该有一个方法是__len__() >>'abc'.__len__() 3 #而len('abc'),也可以获取字符串长度,因为len()就是调用的类str中的__len__ 因此 #根