Should Content-Type header be present when the message body is empty?

Should the Content-Type header be present in an HTTP request or response when there is no payload body?

Is the correct combination of HTTP headers in this case to have no Content-Type and a Content-Length of 0, or should the Content-Type not be present at all when the message lacks a body?


RFC 7231 says:

A sender that generates a message containing a payload body SHOULD generate a Content-Type header field in that message [...]

So it doesn't say explicitly what to do if you're generating a message that doesn't have a payload body, but it certainly seems implied that not sending a Content-Type header would be appropriate in that case.

Content-Length: 0 is how you would indicate to the receiver that there will be no body, unless you're using something like chunked encoding.