Does the HTTP Protocol support multiple content types in response headers?

I'm wondering if I can return the response header

Content-Type: application/json text/json 

or isn't this legal?

The HTTP protocol states that Content-Type should be of mediaType and that mediaType is defined as the following:

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

But I'm having trouble interpreting what this means, can anyone enlighten me?

Thanks!


Solution 1:

You need to look at the definition of the header field:

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

Content-Type = "Content-Type" ":" media-type

so it takes a single media-type, which is defined by the grammar you quoted above.

So the answer is: a single type/subtype, followed by optional parameters.

Solution 2:

No. As pointed out in the accepted answer, the header value itself does not allow for multiple values, and it is also not allowed to send multiple Content-Type headers:

A sender MUST NOT generate multiple header fields with the same field name in a message unless either the entire field value for that header field is defined as a comma-separated list [i.e., #(values)] or the header field is a well-known exception (as noted below).

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

None of the "escape clauses" holds, because media-type does not allow a comma-separated list of values, and Content-Type evidently is not a well-known exception, either.