17 - 03 - 03 图解HTTP(07)

来源:互联网 发布:大数据与教育 编辑:程序博客网 时间:2024/05/16 08:13

==获取部分内容的范围请求

要实现断点续传的功能需要指定下载的实体范围,像这样,指定范围发送的请求叫做范围请求,

执行范围请求的时候,会用到首部字段Range 来指定资源的Byte范围

 

针对范围请求,响应会返回状态码为206 Partial Content的响应报文,另外,对于多重范围的范围请求,响应会在首部字段Content-Type标明Multipart/byteranges后 返回响应报文。

若是服务器无法响应范围请求,则会返回状态码200OK,和完整的实体内容(断点不支持续传)。

==内容协商返回最合适的内容

同一个web网站有可能存在内容相同的页面,比如中英文版的Web,内容上虽然相同,但是使用的语言(人类语言)不同。

当浏览器的默认语言是英文或者是中文,访问相同URL的Web界面时,则会显示对应的英文版/中文版的Web界面(根据浏览器的默认语言来调整)。这样的机制称为内容协商(Content Negotiation)。

内容协商是指客户端和服务端就响应的资源内容进行交涉,然后提供给客户端最合适的资源,内容协商会以相应资源的语言,字符集,编码方式,等等作为判断的基准。包含在请求报文中的某些字段(↓)就是判断的基准。

 

内容协商技术有以下三种类型:

1、服务器驱动协商(Server-driven Negotiation):

由服务器进行内容协商,以请求的首部字段作为参考,在服务器端自动处理。但是对用户来说,以浏览器发送的信息作为判定的依据,并不一定能删选出最佳的内容,

2、客户端驱动协商(Agent-driven Negotiation):

由客户端进行内容协商的方式。用户从浏览器显示的可选列表中手动选择,比如按 OS的类型/浏览器类型,自行切换成PC界面/手机界面。

3、透明协商(Transparent Negotiation)

是服务器驱动和客户端驱动的集合体,是由服务器端和客户端各自进行协商的一种方法。

1 0