- Accept-Ranges 응답 HTTP 헤더는 부분 요청의 지원을 알리기 위해 서버에 의해 사용
- Accept-Ranges 필드의 값은 범위를 정의하기 위해 사용될 수 있는 단위를 표시
- Accept-Ranges 헤더가 존재하면, 브라우저는 처음부터 다시 다운로드를 시작하지 않고, 중단된 다운로드를 연속으로 가능 → Range 헤더
- 클라이언트가 Range 헤더를 이용해서 요청하는 경우 서버 역시 Range 요청을 처리할 준비 필요 → 서버가 클라이언트에게 Range 헤더에 대한 처리 지원 여부를 알려주는데 Accept-Range 헤더가 사용
HTTP 1.1에서는 Accept-Range의 두가지 형태의 값
- Accept-Range: bytes
- Range 요청을 처리 가능
- Accept-Ragne: none
- Range 요청을 지원 X
※ 침고
- 클라이언트의 Range 요청에 대해 서버는 Accept-Range 헤더를 반드시 포함하고 있어야하는 것 아님 → 서버가 Accept-Range 헤더를 포함하지 않아도 Range 헤더 사용 가능
- 클라이언트의 Range 요청을 서버가 지원하지 않는다면, Range 요청에도 불구하고 전체 컨텐츠를 전달
Range 헤더를 포함하여 요청한 예
- 서버에서 Range 요청을 지원하기 때문에 206 Partial Contents 메시지와 함께 데이터를 전달
- 60~65 바이트를 전달해 줄것을 요청
- 웹서버가 클라이언트의 Range 헤더 요청에 대한 응답을 정상적으로 전송
- 응답헤더의 Accept-Range: bytes 와 Content-Length: 6을 통해 데이터 확인 가능 → Content-Length는 6 bytes
- Content-Range은 전송하는 "bytes 용량/최종 용량"을 표시
서버에서 Range 요청을 지원하지 않는 예
- 클라이언트에서 Range 요청을 했음에도 불구하고 서버는 컨텐츠의 전체 용량을 전달
- 응답헤더의 Accept-Ranges: none 헤더와 Content-Length: 298997을 통해 전체 사이즈가 모두 전달되었음을 확인
문법
Accept-Ranges: bytes
# 또는
Accept-Ranges: none
디렉티브(directive)
- none
- 지원되는 범위의 단위가 없음을 표시
- none은 헤더가 존재하지 않는 경우와 동일하므로 거의 사용 X
- IE9 같은 브라우저의 경우 다운로드 매니저의 일시중지 버튼을 비활설화(disable) 혹은 제거(remove)할 때 사용
- bytes
- 범위는 바이트로 표현 가능
'HTTP > HTTP 헤더' 카테고리의 다른 글
HTTP 프로토콜 Date 헤더 (0) | 2022.06.25 |
---|---|
HTTP 프로토콜 Content-Type 헤더 (0) | 2022.06.25 |
HTTP 프로토콜 Content-Encoding 헤더 (0) | 2022.06.25 |
HTTP 프로토콜 Connection 헤더 (0) | 2022.06.25 |
HTTP 프로토콜 Accept-Encoding 헤더 (0) | 2022.06.24 |