一,内容协商(Content Negotiation)

同一个Web网站可能存在很多份相同内容的页面,比如英文版和中文版的Web页面,它们内容上相同,但是使用语言不同。比如大家进入英文版的google首页和中文版的google首页,页面元素布局一致,但是显示的语言不同。

当浏览器的默认语言为英文或者中文,访问相同URI的Web页面时候,就返回对应的英文或中文的Web页面,这种机制称为内容协商(Content Negotiation)。

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

二,内容协商相关的首部字段

包含在请求报文中的某些首部字段就是内容协商判断的基准。

Accept

Accept-Charset

Accept-Encoding

Accept-Language

Content-Language

三,内容协商技术的类型

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

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

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

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

由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。还可以利用JavaScript脚本在Web页面中自动进行上述选择。比如按OS的类型或者浏览器类型,自行切换成PC版页面或者手机版页面

3 透明协商(Transparent Negotiation)

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

HTTP要点概述:十,内容协商的更多相关文章

  1. HTTP要点概述:一,TCP/IP协议族

    一,协议: 计算机与网络设备之间如果要相互通信,双方必须基于相同的方法.比如说,怎么探测到通讯目标,哪一方发起通信,使用哪一种语言通信,怎么结束通信,都需要事先规定.不同硬件,操作系统之间的通信需要一 ...

  2. Boost Asio要点概述(一)

    [注]本文不是boost asio的完整应用讲述,而是仅对其中要点的讲解,主要参考了Boost Asio 1.68的官方文档(https://www.boost.org/doc/libs/1_68_0 ...

  3. JavaScript 要点(十六)RegExp 对象

    RegExp:是正则表达式(regular expression)的简写. RegExp 对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大 ...

  4. javaScript 要点(十五)HTML DOM 导航

    通过 HTML DOM,能够使用节点关系在节点树中导航. 1.HTML DOM 节点列表 getElementsByTagName() 方法返回节点列表.节点列表是一个节点数组. 下面的代码选取文档中 ...

  5. JavaScript 要点(十四)HTML DOM 元素(节点)

    A.创建新的 HTML 元素 如需向 HTML DOM 添加新元素,必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素. <div id="div1"> ...

  6. JavaScript要点(十二) HTML DOM 事件

    HTML DOM 使 JavaScript 有能力对 HTML 事件做出反应. 对事件做出反应 我们可以在事件发生时执行 JavaScript,比如当用户在 HTML 元素上点击时. 如需在用户点击某 ...

  7. JavaScript要点(十) HTML DOM - 改变 HTML

    HTML DOM 允许 JavaScript 改变 HTML 元素的内容. A.改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 今天的日期是: Thu Oct 13 2 ...

  8. HTTP要点概述:四,HTTP方法

    使用HTTP协议的时候,客户端可以通过HTTP方法告知服务器自己请求的意图. 看了这篇文章以后,谁再说HTTP方法只有GET和POST,你的眼睛是用来吃饭的嘛! 一,GET:获取资源 GET用来请求访 ...

  9. HTTP要点概述:三,客户端和服务器,请求和响应

    一,客户端和服务器: HTTP协议主要用于客户端和服务器之间的通信. 1,客户端(client):请求访问资源的一端.(知道为啥用C表示客户端了吧) 2,服务器(server):提供资源响应的一端. ...

随机推荐

  1. 邮箱地址自动提示jQuery插件

    // mailAutoComplete.js v1.0 邮箱输入自动提示// 2010-06-18 v2.0 使用CSS class类代替CSS对象,同时增强代码可读性// 2010-06-18 v2 ...

  2. 微信小程序 video组件 不随页面滚动

    1.页面初始化(滚动前)时,video所在位置 2.页面滚动后,video视频组件所在位置 看了别人家的小程序并不会出现这种状况.最后检查发现,是页面包裹层设置了 height:100% 导致的 顺便 ...

  3. mysql错误Error(1133): Can’t find any matching row in the use

    执行插入用户语句没有问题,但是执行权限赋值的时候提示:1133 - Can't find any matching row in the user table; 解决办法:插入新的用户成功时,需要刷新 ...

  4. Springboot和SpringMVC区别

    Springboot和SpringMVC区别----http://www.cnblogs.com/xdyixia/p/9279644.html

  5. [luoguP1011] 车站(递推)

    传送门 蒟蒻我关系式没有找出来. 直接模拟递推过程好了. 代码 #include <cstdio> #define N 21 int a, n, m, x, y; int up[N][2] ...

  6. 592. Fraction Addition and Subtraction

    Problem statement: Given a string representing an expression of fraction addition and subtraction, y ...

  7. codeforces 359A

    #include<stdio.h> #define N 60 int map[N][N]; int main() {  int n,m,i,j,flag;  while(scanf(&qu ...

  8. 前端开发:CSS3

    CSS介绍: CSS能够使页面具有美观一致的效果,并且能够让内容与格式分离,利于扩展 所以,CSS解决了下面两个问题: 1. 将HTML页面的内容与格式分离: 2. 提高web开发的工作效率. CSS ...

  9. ****Call to a member function item() on a non-object

    A PHP Error was encountered Severity: Error Message: Call to a member function item() on a non-objec ...

  10. POJ 3680_Intervals

    题意: 给定区间和该区间对应的权值,挑选一些区间,求使得每个数都不被K个区间覆盖的最大权值和. 分析: 如果K=1,即为区间图的最大权独立集问题.可以对区间所有端点排序后利用动态规划的方法,设dp[i ...