HTTP Accept Header的含义

44
当浏览器的 Accept 请求头部包含如下内容时:
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

这是否意味着application/xmlapplication/xhtml+xmltext/html都有一个0.9的质量参数?

还是说,application/xmlapplication/xhtml+xml具有默认(q=1 ),而text/html具有q=0.9的参数?

我认为是前者,但希望有人能更确定地知道。

2个回答

43
不,如果缺少quality parameter,则假定q=1.0

每个媒体范围都可以跟随一个或多个accept-params,以“q”参数开头表示相对质量因子[...]使用从0到1的qvalue比例(第3.9节)。默认值为q=1。

因此,给定的值应解释为:“application/xmlapplication/xhtml+xmlimage/png是首选媒体类型,但如果它们不存在,则发送text/html实体(text/html;q=0.9),如果不存在,则发送text/plain实体(text/plain;q=0.8),如果不存在,则发送具有任何其他媒体类型的实体(*/*;q=0.5)。"

1
那么,澄清一下,在这个例子中,“;q=0.9”只适用于“text/html”吗?作为推论,“image/png”也是“q=1”吗? - mckamey
2
我阅读了RFC,但发现其含糊不清,因此提出了这个问题。媒体范围是否在每个“,”处完全结束? - mckamey
17
这里有一篇关于Accept Headers的不错的博客文章:http://www.gethifi.com/blog/browser-rest-http-accept-headers 。除了其他内容外,这篇博客也回答了OP的问题。 - Simen S

0
口头上来说,这可以被解释为“application/xml、application/xhtml+xml和image/png是首选的媒体类型,但如果它们不存在,则发送text/html实体;如果它也不存在,则发送text/plain实体;如果仍然不存在,则发送任何其他媒体类型的实体。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接