使用Accept-Language标头中的区域设置回退的正确方法是什么?在从语言环境中删除任何子标签(区域等)之前,应用程序是否应该尝试完全匹配所有请求的语言环境?或者它应该反过来发生,即使请求中不存在那些无区域的语言环境? HTTP spec没有任何指示。
答案 0 :(得分:1)
RFC 2616已于2014年被RFC 7230至7235淘汰。请不要再提及它了。通过新的RFC,Accept-Language
标题现在由RFC 7231, section 5.3.5授权。上述部分是指RFC 4647, section 3.3,它已经在RFC 2616上进行了授权。此外,RFC 7231明确指出将使用“基本过滤”匹配策略,详见RFC 4647, section 3.3.1
基本过滤或多或少是前缀搜索。但请注意,此搜索正在查找语法前缀,而不是词法前缀。应用程序应按质量降序(如果没有提供质量,这是客户端提供的顺序)浏览所请求的语言标记列表,并查看每个标记是否可以满足。如果没有一个可以得到满足,RFC 7231说明了这一点:
如果请求中存在标头字段且没有可用的标头字段 响应的表示具有匹配的语言标记, 源服务器可以通过处理来忽略头字段 回应好像不受内容谈判或尊重 标题字段,通过发送406 (Not Acceptable)响应。
相关部分确实强调,忽略语言要求是更健全的事情。