It depends on the Content-Encoding
.
RFC 2616 has this to say (amongst other things) about Content-Length
:
Applications SHOULD use this field to indicate the transfer-length of
the message-body, unless this is prohibited by the rules in section
4.4.
So we have to figure out what transfer-length is; Section 4.4 (Message Length) says these two things about transfer-length:
The transfer-length of a message is the length of the message-body as
it appears in the message; that is, after any transfer-codings have
been applied.
If a Content-Length header field (section 14.13) is present, its
decimal value in OCTETs represents both the entity-length and the
transfer-length. The Content-Length header field MUST NOT be sent if
these two lengths are different
Okay, so we know that in this case transfer-length, entity-length, and Content-Length all have the same value, and all refer to "the length of the message-body as it appears in the message", and so we have to determine what message-body is. Section 4.3 says this about message-body:
The message-body (if any) of an HTTP message is used to carry the
entity-body associated with the request or response."
So what's an entity-body? For that you have to refer to basically all of Section 7. (Which also defines entity-length.) Most importantly, there this:
entity-body := Content-Encoding( Content-Type( data ) )
The length of the entity-body (and therefore our value for Content-Length per 4.4) is the length of the data after content-coding.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…