I think a Content-Length
specifies the size of the body of the response - not the size of the resource. As such, it doesn't make sense in the context of a HEAD
response.
Edit: The specs says:
The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response. The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the information sent in response to a GET request. This method can be used for obtaining metainformation about the entity implied by the request without transferring the entity-body itself. This method is often used for testing hypertext links for validity, accessibility, and recent modification.
The response to a HEAD request MAY be cacheable in the sense that the information contained in the response MAY be used to update a previously cached entity from that resource. If the new field values indicate that the cached entity differs from the current entity (as would be indicated by a change in Content-Length, Content-MD5, ETag or Last-Modified), then the cache MUST treat the cache entry as stale.
-- http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4
This suggests that my above statement is wrong. Especially the latter paragraph strongly suggests that a HEAD can have a Content-Length
header.