RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—译文)

part of Hypertext Transfer Protocol -- HTTP/1.1

RFC 2616 Fielding, et al.

14 头字段规定

  该章节定义了HTTP1.1标准所包含的所有头字段的相关语法和含义。实体头字段是接收者或者发送者所涉及到的,并不区分是客户端还是服务器所拥有,而是依据是谁发送或者是谁接受该实体的字段。

14.1 Accept

  Accept请求头字段可以用来指定一个能被响应接受的确定的媒体类型。Accept头字段可以用来标识那些在请求中特别指定类型的一个小范围的集合,比如请求内联图片的情况。

         Accept         =  "Accept" ":" #( media-range(媒体范围) [ accept-params (可接受的参数)] )

         media-range    = ( "*/*"  | ( type "http://www.likecs.com/" "*" )   | ( type "http://www.likecs.com/" subtype )   ) *( ";" parameter )

         accept-params  = ";" "q" "=" qvalue *( accept-extension(可接受的扩展) )

         accept-extension = ";" token(记号) [ "=" ( token | quoted-string(引用字符串) ) ]

  星号"*"字符用来把媒体类型归类到ranges中,"*/*" 表示所有媒体类型都可以接受,"type/*"标明该媒体类型下的所有子类型。media-range可以包含适当范围内的媒体类型参数。

  每个media-range都可以跟随一个或多个accept-params参数,以q参数开始,用来表明相对的权重因子。第一个q参数(如果有的话)将media-range参数从accept-params字段中分隔开。权重参数允许用户或用户代理指示对该媒体范围的相对偏好程度,q的值在0到1范围内。默认的值是1。

  请注意:使用“q”参数名称将媒体类型参数从Accept扩展参数中分离出来是有历史实践性的。尽管这可能会从媒体范围中阻止任何叫做“q”的媒体类型,但是由于IANA(因特网编号管理局)注册表中缺少"q"字段的相关记录,并且Accept中很少使用任何媒体类型的参数,因此这种事情不太可能发生。

  一个简单的例子:

         Accept: audio/*; q=0.2, audio/basic

  可以理解为我第一优先需要“audio/basic”格式,但是在降低百分之八十的标准后给我传送其他的audio类型也是可以的。

  如果没有Accept投资段,那么假设客户端可以接受任何的媒体类型。如果存在Accept头字段,但是服务器无法发送一个包含Accept字段中可接受的响应,那么就会返回一个406状态码。

  一个稍微复杂点的例子:

         Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c

  口头上的解释是,首选的媒体类型是text/html和text/x-c,但是如果他们不存在,那么可以返回text/x-dvi实体,但是如果也不存在,那么就需要发送那个text/plain实体。

  媒体范围(Media ranges)可以被更特定的媒体范围(Media ranges)或特定的媒体类型(media types)覆盖。如果一个给定类型应用了多个媒体范围,那么最特定的会被采用。我们来看下面的例子:

         Accept: text/*, text/html, text/html;level=1, */*

  拥有以下的优先级

         1) text/html;level=1

         2) text/html

         3) text/*

         4) */*

  与给定类型关联的媒体类型权重因子是通过找到与该类型匹配的具有最高优先级的媒体范围来确定的。例如,

 Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5

  将会导致其关联的权重值是下面这样:

         text/html;level=1    = 1

         text/html                 = 0.7

         text/plain                = 0.3

         image/jpeg             = 0.5

         text/html;level=2     = 0.4

         text/html;level=3     = 0.7

  注意:用户代理可能会为某些媒体范围提供一组默认的权重值。但是,除非用户代理是一个封闭的系统,不能与其他执行中的代理(rendering agents)交互,否则这个默认设置应该由用户配置。

14.2 Accept-Charset

  Accept-Charset 请求头字段可以用来标示怎样的字符集可以在响应中使用。该字段允许客户端有能力去理解综合性更强或者具有特殊用途的字符集,具有向能够在这些字符集中表示文档的服务器发出信号的能力。

        Accept-Charset = "Accept-Charset" ":" 1#( ( charset | "*" )[ ";" "q" "=" qvalue ] )

  在3.4小节我们解释了有关于字符集的值的相关信息。每一个字符可以拥有一个用来表示该字符权重的相关的值。权重的默认值是1。下面我们看一个例子:

        Accept-Charset: iso-8859-5, unicode-1-1;q=0.8

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxpxz.html