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

同一个Web网站有可能存在着多份相同内容的页面。比如英语版和中文版的Web页面,它们内容上虽相同,但使用语言却不同。当浏览器的默认语言为英语或中文,访问相同URL的Web页面时,则会显示对应的英语版或中文版的Web页面。这样的机制称为内容协商(Content Negotiation)。

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言字符集编码方式作为判断的基准。

包含在请求报文中的某些首部字段(如下)就是判断的基准(这些首部字段的详细说明后面再讲):

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language

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

  • 服务器驱动协商(Server-driven Negotiation):由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不一定能筛选出最优内容。
  • 客户端驱动协商(Agent-driven Negotiation):由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。还可以利用JavaScript脚本在Web页面上自动进行上述选择。比如按OS的类型或浏览器类型,自行切换成PC版页面或手机版页面。
  • 透明协商(Transparent Negotiation):是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法。
时间: 2024-08-25 13:01:00

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

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

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

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

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

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信息之获取部分内容的范围请求

以前,用户不能使用现在这种高速的带宽访问互联网.当时,下载一个尺寸稍大的图片或文件就已经很吃力了.如果下载过程中遇到网络中断的情况,那就必须重头开始.为了解决上述问题,需要一种可恢复的机制.所谓恢复是指能从之前下载中断处恢复下载. 要实现这功能需要指定下载的实体范围.像这样,指定范围发送的请求叫做范围请求(Range Request).对一份10000字节大小的资源,如果使用范围请求,可以只请求5001-10000字节内的资源. 执行范围请求时,会用到首部字段Range来指定资源的byte范围.

PHP设置头信息,取得返回头信息

php 设置头信息,取得返回头信息 张映 发表于 2011-05-27 分类目录: php 设置请求的头信息,我们可以用header函数,可以用fsockopen,可以用curl等,本文主要讲的是用curl来设置头信息,并取得返回后的头信息. 一,请求方设置自己的头信息,header.php 查看复制打印? <?php function FormatHeader($url, $myIp = null,$xml = null) { // 解悉url $temp = parse_url($url);

字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人

输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 b= 9 c=30 a>b 交换 a=9 b=18 可不可以用选择法?可不可以用冒泡法?但是这里用不着 例题: string1 string2 string3 temp a=18 b= 9 c=30 b>c? 交换 b中放的是b 和 c 中小的数,c中放的是bc中大的数. 如果a<b,则输出

【内网信息收集】之探测域内存活主机信息

利用NetBIOS快速探测内网 NetBIOS简介: NetBIOS,为网上基本输入输出系统(英语:Network Basic Input/Output System)的缩写,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据.严格来说,NetBIOS不是一种网上协议,而是应用程序接口(API). nbtscan使用: 可扫描本地或远程TCP / IP网络上的打开的NETBIOS名称服务器,但只能用于局域网. 官网链接:http://www.

通向高可扩展性之路(推特篇) ---- 一个推特用来支撑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