HTTP Range 헤더를 사용해서 URL 리소스의 파일 크기 확인하기

HTTP는 애플리케이션에서 가장 많이 사용하는 네트워크 프로토콜이라고 볼 수 있다. 많은 웹 서비스 그리고 API 서버들에서 이 프로토콜을 사용하고 있다.

URL은 인터넷에 있는 리소스(파일 등)의 고유주소를 표현하는 표준(URI의 서브셋)이다. 다음으로, URL과 함께 HTTP 프로토콜의 GET, POST, PUT, DELETE등의 메서드를 사용해서 URL에 해당하는 리소스를 사용하거나 관리할 수 있다. HTTP 프로토콜의 GET 메서드는 URL의 리소스를 다운로드하는 기능을 제공한다. 보통은 GET을 사용해서 URL 리소스 전체를 다운받아서 사용한다.

여러 클라우드를 사용하거나 Flickr, 인스타그램등의 서비스에 연결하다 보면, 이미지 파일에 대한 URL과 이미지의 크기(가로X세로)등은 알려주지만, 이미지 파일의 크기를 알려주지 않는 서비스들이 있다. 그래서 시스템의 부하를 최소화하면서 URL에 있는 리소스의 크기(파일의 크기)를 가져오는 방법을 살펴본다.

HTTP 1.1 프로토콜 문서를 확인해보면, 리소스의 일부만을 가져올 수 있다. HTTP 헤더에 Range 속성을 사용해서 리소스를 요청하면 된다. Range에 대한 내용은  http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 에서 확인할 수 있다.
HTTP 헤더의 다음의 속성을 추가해서 HTTP의 GET 메서드를 사용하면, 리소스에 해당하는 파일의 크기를 알 수 있다.

Range: bytes=0-1

아래의 예는 일반적으로 많이 사용하는 형태로, 리소스 전체를 가져오는 예이다.

아래의 예는 1바이트만 가져오고, 응답의 헤더에서 파일의 사이즈를 알 수 있다.

위 스크린샷에서 아래쪽에 Response 헤더의 Content-Range를 보면 다음과 같다.

Content-Range: bytes 0-1/14022

이 Response 헤더의 값을 읽으면 리소스 파일의 크기를 알 수 있다.

이상 간단하게 인터넷에 있는 파일(URL)의 크기를 확인할 수 있는 방법에 대해서 살펴봤다. 이 방법을 사용하면, HTTP 프로토콜을 사용해서 이어받기 기능도 제공할 수 있다. 따라서, HTTP로 파일 처리를 해야 하는 경우에는 헤더의 Range 속성을 이용해서 Robust한 파일 처리가 가능하겠다.

HTTP Range 헤더를 사용해서 URL 리소스의 파일 크기 확인하기”에 대한 2개의 생각

  1. Evergreen

    혹시 화면캡처된 HTTP 테스트를 할 수 있는 곳을 알 수 있을까요..?
    깔끔하고 보기좋아서 써보고 싶네요…

    응답

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.