如何解释HTTP Accept标头?

时间:2009-04-22 08:35:34

标签: http rest

根据HTTP1.1 spec,以下

的Accept标头
Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c

被解释为

text/html and text/x-c are the preferred media types, but if they do not 
exist, then send the text/x-dvi entity, and if that does not exist, send 
the text/plain entity

让我们将标题更改为:

Accept: text/html, text/x-c

如果这两项都不被接受,会返回什么?例如让我假装我只支持application / json

3 个答案:

答案 0 :(得分:4)

也许您应该回复 406 Not Acceptable 。这就是我阅读this的方式。

415不支持的媒体类型

我会选择406,因为在这种情况下并根据规格,回复应该包括一系列备选方案。虽然我不清楚该列表应该是什么样子。

答案 1 :(得分:2)

“如果存在Accept头字段,并且服务器无法根据组合的Accept字段值发送可接受的响应,则服务器应该发送406(不可接受)响应。” - RFC2616, Section 14.1

答案 2 :(得分:1)

你可以选择。您可以使用406回复并包含描述可用格式的“实体”(例如HTML或文本文件);或者,如果您使用的是HTTP 1.1,则可以发送您支持的格式,即使它未在Accept标头中列出。

(参见RFC 2616的第10.4.7节)

  

“注意:允许使用HTTP / 1.1服务器   返回不是的回复   根据接受可以接受   请求中发送的标头。在一些   在某些情况下,这甚至可能更为可取   发送406响应。用户代理   我们鼓励他们检查标题   确定的传入响应   如果可以接受的话。“