2017-04-17 43 views
1

请求标头的值(例如Accept-Language,Accept-Encoding等)具有隐式或显式加权值(例如en; q=0.8)。如果加权的HTTP头具有重复值,权重不同,应如何处理?

在不太可能发生完整字段值收率暧昧信息,具体地,如果歧义可以解释为任一不能接受的(q=0)或可接受的,因为一些非零质量值,例如分析得到的值:

Accept-Encoding: gzip; q=0.8, gzip; q=0 

应此被解释为:

  1. 不能接受;
  2. 可接受;
  3. 标题无效;

或其他一些选择,也许?

RFC 7231,对质量的一般section 5.3.1

重被归一化为范围从0到1,其中 0.001是最优选的,而1是最优选的实数; 0表示“不可接受”。如果没有 “Q” 参数存在, 默认权重为1

Accept-Encoding特异性section 5.3.4,第3和第4

  • 如果该表示的内容编码是Accept-Encoding字段中列出的 内容编码之一,那么它是 可接受的,除非其伴随有q值为q的值(如在第5.3.1节中定义的 ,q值为0意味着“不可接受”。)

  • 如果多个内容编码是可接受的,则可接受的具有最高非零q值的内容编码是优选的。

  • 说清楚q=0的意思是“不能接受的”,并且最高非零qvalue是首选,但他们似乎并没有讨论任何可能的不确定性;可能是因为这是不太可能的事件。

    回答

    1
  • 如果表示的内容的编码是在接受编码字段中列出的 内容编码之一,那么它是 可接受除非它是伴随着一个qvalue为0(如在5.3.1节中定义 ,0 qvalue意思是“不能接受的”。)

  • 如果多个内容编码是可接受的,则可以接受 内容编码具有最高非零q值是首选。

  • Accept-Encoding: gzip; q=0.8, gzip; q=0具有单个内容编码gzip哪一个是重复具有不同qvalue的。

    • 首先,它是伴随着qvalue 0.8其是“可接受的”
    • 其次,它是伴随着qvalue 0这是“不可接受的”。

    当我读到的报价规则:看

    1. 检查内容编码是伴随着零qvalue;如果是这样,那是“不可接受的”;
    2. 否则,取所有副本的最大q值权重。

    所以,我的解释是,下面的两行是等价的:

    Accept-Encoding: gzip, gzip;q=0.001, compress;q=0.1, compress;q=0, *;q=0.2, *;q=0.1 
    Accept-Encoding: gzip;q=1, compress;q=0, *;q=0.2 
    

    ,并为你的榜样,下面两行是相同的:

    Accept-Encoding: gzip; q=0.8, gzip; q=0 
    Accept-Encoding: gzip;q=0 
    
    相关问题