Content-LengthContent-Length는 메시지 본문의 크기를 바이트 단위 십진수로 나타내는 헤더입니다. 수신 측은 이 값으로 본문을 어디까지 읽어야 하는지, 즉 메시지의 경계를 정확히 알 수 있습니다.
값은 압축·인코딩이 적용된 실제 전송 본문의 바이트 수여야 하며, 문자 수가 아닙니다(멀티바이트 문자는 여러 바이트). 서버는 진행률 표시·연결 재사용·버퍼 할당에 이 값을 활용합니다. 값이 실제 본문 길이와 어긋나면 연결이 끊기거나 응답이 잘리는 오류가 납니다.
본문 크기를 미리 알 수 없어 스트리밍해야 할 때는 Content-Length 대신 `Transfer-Encoding: chunked`를 사용합니다. 두 헤더를 동시에 보내는 것은 금지되며, HTTP/1.1에서 둘이 함께 오면 서버·프록시마다 다르게 해석해 요청 스머글링(request smuggling)의 고전적 원인이 됩니다.
서버는 Content-Length 없는 요청 본문을 거부하려 411 Length Required를, 본문이 허용 한도를 넘으면 413 Content Too Large(Payload Too Large)를 반환할 수 있습니다.
Content-Length: <decimal-byte-count>e.g. Content-Length: 348