HTTP协议是否支持响应头中的多种内容类型?

时间:2011-04-27 18:58:20

标签: http http-headers

我想知道我是否可以返回响应标头

Content-Type: application/json text/json 

或者这不合法吗?

HTTP协议规定Content-Type应为mediaType,mediaType定义如下:

   media-type     = type "/" subtype *( ";" parameter )
   type           = token
   subtype        = token

但我无法解释这意味着什么,有人可以启发我吗?

谢谢!

2 个答案:

答案 0 :(得分:21)

您需要查看标题字段的定义:

http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.14.17

Content-Type =“Content-Type”“:”media-type

所以它需要一个媒体类型,它由你上面引用的语法定义。

所以答案是:单个类型/子类型,后跟可选参数。

答案 1 :(得分:0)

不。正如接受的答案中指出的那样,标头值本身不允许多个值,也不允许发送多个Content-Type标头:

发件人不得生成具有相同字段的多个标头字段 消息中的名称,除非该标头的整个字段值 字段定义为以逗号分隔的列表[即#(values)]或 标头字段是众所周知的异常(如下所述)。

https://tools.ietf.org/html/rfc7230#section-3.2.2

“转义子句”都不成立,因为media-type不允许使用逗号分隔的值列表,并且Content-Type显然也不是众所周知的例外。