HTTP接受语言字段中的语言顺序是否重要?

时间:2013-10-22 17:10:45

标签: http http-headers http-accept-language

我想知道Accept语言中实际语言的顺序是否重要。例如,如果我们的HTTP GET消息包含标题:

Accept-Language: en-us, en-gb;q=0.2, en;q=0.3, fr, fr-ch, da, fi

...浏览器会更喜欢传统法语(fr)而不是瑞士法语(fr-ch),即使它们都没有提到相对质量因子q,因此也是1.

2 个答案:

答案 0 :(得分:2)

不,排序无关紧要。

答案 1 :(得分:0)

当我实现这个时,我使用了一个稳定的排序,因此具有相同相对q值的值将保持相同的相对顺序。我认为这是合乎逻辑的,可能是reflects the intention of the spec

  

请注意,某些收件人会处理语言标记的顺序      列为优先级递减的指示,特别是对于标签      被赋予相同质量值(没有值与q = 1相同)。      但是,不能依赖此行为。为了一致性和      最大化互操作性,许多用户代理分配每个语言标记      一个独特的质量价值,同时也按顺序列出它们      质量。可以对语言优先级列表进行额外讨论      在Section 2.3 of RFC4647中找到。

作为可能需要此行为的示例,如果您有一个缓存层/中间件,并且您以不稳定的方式处理Accept*标头(例如,如果它们都具有相同的q,则可能是随机选择虽然你可能在技术上没有做错任何事情,但结果将是不可预测的,它可能会导致缓存层出现问题和用户体验不佳(例如,页面之间的语言没有明显变化)。