HTTPQUERY
한국어

Content-Range

사용법

Content-Range 헤더는 서버가 범위 요청을 처리하며 리소스의 일부만 전달할 때 206 Partial Content 응답에 나타납니다. 이 헤더는 부분 콘텐츠의 바이트 범위와 전체 리소스의 총 크기를 명시합니다.

범위 요청은 효율적인 다운로드를 가능하게 합니다. 큰 파일을 전송하다 중단된 클라이언트는 처음부터 다시 시작하는 대신 연결이 끊긴 지점부터 이어받습니다. 미디어 플레이어는 전체 스트림을 내려받지 않고 오디오나 비디오 파일의 특정 위치로 이동하기 위해 범위 요청을 사용합니다.

서버는 Accept-Ranges 헤더를 통해 범위 요청 지원을 알리며, 값은 보통 bytes로 설정됩니다. 범위 요청이 리소스 경계를 넘어서는 바이트 범위를 요구하면, 서버는 416 Range Not Satisfiable로 응답하며 실제 리소스 크기를 담은 Content-Range 헤더를 포함시킵니다.

구문은 세 가지 요소로 이루어진 구조화된 형식을 따릅니다. 단위(거의 항상 bytes), 바이트 범위, 그리고 전체 크기입니다.

Content-Range: <unit> <range-start>-<range-end>/<size>

unit

범위의 단위 유형입니다. bytes 값이 널리 구현된 유일한 단위입니다.

range-start

반환된 범위의 첫 바이트를 나타내는 0부터 세는 정수입니다.

range-end

반환된 범위의 마지막 바이트를 나타내는 0부터 세는 정수이며, 그 바이트를 포함합니다.

size

완전한 리소스의 총 크기(바이트 단위)입니다. 스트리밍이나 동적으로 생성되는 콘텐츠처럼 전체 길이를 알 수 없을 때는 별표(*)가 크기를 대신합니다.

예시

총 크기가 65,000바이트인 파일에서 클라이언트가 1000바이트 지점부터 다운로드를 재개합니다. 서버는 1000번부터 2000번까지의 바이트를 반환합니다.

Content-Range: bytes 1000-2000/65000

스트리밍 리소스가 총 크기를 모른 채 범위를 전달합니다. 별표는 전체 길이를 알 수 없음을 나타냅니다.

Content-Range: bytes 1000-2000/*

요청된 바이트가 리소스 크기를 넘어서기 때문에 서버가 범위 요청을 거부합니다. 응답은 416 Range Not Satisfiable 상태를 담고 실제 크기를 알려 줍니다.

HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */50000

multipart 범위 응답은 하나의 응답으로 여러 범위를 전달합니다. 각 파트는 multipart/byteranges 본문 안에서 자체 Content-Range 헤더를 포함합니다.

HTTP/1.1 206 Partial Content
Content-Type: multipart/byteranges; boundary=BOUNDARY

--BOUNDARY
Content-Type: text/plain
Content-Range: bytes 0-499/10000

[first 500 bytes]
--BOUNDARY
Content-Type: text/plain
Content-Range: bytes 9500-9999/10000

[last 500 bytes]
--BOUNDARY--

참고

Content-Length는 메시지 본문의 총 크기를 바이트 단위로 알려 줍니다. Content-Range는 현재 응답이 완전한 리소스의 어느 바이트 구간을 담고 있는지 식별합니다. 전체 응답은 Content-Length만 사용하고, 206 Partial Content 응답은 두 헤더를 함께 사용합니다.