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



我想知道接受语言中实际语言的顺序是否重要。例如,如果我们的 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。

不,排序无关紧要。

当我实现这一点时,我使用了稳定的排序,以便具有相同相对 q 值的值将保持相同的相对顺序。我相信这是合乎逻辑的,可能反映了规范的意图:

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

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

相关内容

最新更新