我想知道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.
答案 0 :(得分:2)
不,排序无关紧要。
答案 1 :(得分:0)
当我实现这个时,我使用了一个稳定的排序,因此具有相同相对q值的值将保持相同的相对顺序。我认为这是合乎逻辑的,可能是reflects the intention of the spec:
请注意,某些收件人会处理语言标记的顺序 列为优先级递减的指示,特别是对于标签 被赋予相同质量值(没有值与q = 1相同)。 但是,不能依赖此行为。为了一致性和 最大化互操作性,许多用户代理分配每个语言标记 一个独特的质量价值,同时也按顺序列出它们 质量。可以对语言优先级列表进行额外讨论 在Section 2.3 of RFC4647中找到。
作为可能需要此行为的示例,如果您有一个缓存层/中间件,并且您以不稳定的方式处理Accept*
标头(例如,如果它们都具有相同的q,则可能是随机选择虽然你可能在技术上没有做错任何事情,但结果将是不可预测的,它可能会导致缓存层出现问题和用户体验不佳(例如,页面之间的语言没有明显变化)。