【问题标题】:Does the HTTP Protocol support multiple content types in response headers?HTTP 协议是否支持响应标头中的多种内容类型?
【发布时间】:2011-08-14 03:00:13
【问题描述】:

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

Content-Type: application/json text/json 

这不合法吗?

HTTP 协议规定 Content-Type 应该是 mediaType 并且 mediaType 定义如下:

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

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

谢谢!

【问题讨论】:

  • 请注意,Content-Type 与任何其他标题一样,可能出现两次或更多次。
  • @Stephan 我不这么认为:tools.ietf.org/html/rfc7230#section-3.2.2 的转义子句似乎都不适用于 Content-Type。

标签: http http-headers


【解决方案1】:

需要看头域的定义:

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

Content-Type = "Content-Type" ":" 媒体类型

所以它采用单一媒体类型,由您上面引用的语法定义。

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

【讨论】:

    【解决方案2】:

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

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

    https://www.rfc-editor.org/rfc/rfc7230#section-3.2.2

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多