【问题标题】:Significance of different q values in Accept-Language headerAccept-Language 标头中不同 q 值的意义
【发布时间】:2016-10-18 22:38:34
【问题描述】:

在 http GET 请求中,如果我理解正确,Accept-Language 的 q 值会列出响应中的语言优先级。

来自this link

接受语言:da, en-gb;q=0.8, en;q=0.7

丹麦语是首选。如果失败,则要求使用英式英语,并且 最后是任何类型的英语。

如果只是优先级问题,为什么实际价值很重要

在这个例子中,如果改为改为:

接受语言:da, en-gb:q=0.5, en:q=0.4

?

【问题讨论】:

    标签: http


    【解决方案1】:

    Accept-headers 用于server-driven content negotiation。 HTTP 规范没有指定如何处理质量值,只是代理更喜欢更高的值。其他一切由服务器决定。

    这个想法被进一步探索和解释here。这假设资源的原始质量为 1,并且对其执行的每个操作(例如翻译或转换为不同的格式)以降低它的质量。其他考虑的因素是时间(服务器执行操作以产生更好的资源所需的时间)和大小(效率较低的格式)。

    时间和大小通常与语言无关。相反,可以使用可用翻译的质量(即完整性)。例如,如果丹麦语翻译仅完成了 60%,那么标题 Accept-Language: da, en-gb;q=0.8, en;q=0.7 将首选英文翻译,而不是 Accept-Language: da, en-gb:q=0.5, en:q=0.4

    事实上,质量值现在似乎根本没有任何意义。我使用自定义标题Accept-Language: fr;q=0.5, en 在 Firefox 中测试了许多流行的网站(包括 Google 和 Facebook),这意味着我更喜欢英语而不是法语。我测试的所有网站都返回了法语页面。我还交换了“fr”和“en”,只得到了英文页面。这意味着现代网站似乎完全忽略了质量价值,只使用标题中的语言顺序。选项不按优先顺序排列是不寻常的,但它不违反规范。

    (我在每次测试前清除了所有 cookie,而且我不住在说法语的国家,也没有在我的计算机上使用法语,所以这不会影响结果。)

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2014-07-13
      • 2012-01-23
      相关资源
      最近更新 更多