내보내기(0) 인쇄
모두 확장

Blob 서비스 작업의 조건부 헤더 지정

업데이트 날짜: 2014년 2월

일부 Blob 서비스 작업에서는 조건부 헤더를 사용할 수 있습니다. 지정된 조건이 충족될 경우에만 작업을 수행하도록 조건부 헤더를 지정할 수 있습니다.

Blob 서비스는 조건부 헤더에 대한 HTTP/1.1 프로토콜 사양을 따릅니다.

다음 표에서는 지원되는 조건부 헤더에 대해 설명합니다.

 

조건부 헤더 설명

If-Modified-Since

DateTime 값입니다. 지정된 시간 이후 리소스가 수정된 경우에만 작업을 수행하려면 이 헤더를 지정합니다.

If-Unmodified-Since

DateTime 값입니다. 지정된 날짜/시간 이후 리소스가 수정되지 않은 경우에만 작업을 수행하려면 이 헤더를 지정합니다.

If-Match

ETag 값입니다. 리소스의 ETag가 지정된 값과 일치하는 경우에만 작업을 수행하려면 이 헤더를 지정합니다. 2011-08-18 버전 이상의 경우 ETag를 따옴표로 지정할 수 있습니다.

If-None-Match

ETag 값 또는 와일드카드 문자(*)입니다. 리소스의 ETag가 지정된 값과 일치하지 않는 경우에만 작업을 수행하려면 이 헤더를 지정합니다. 2011-08-18 버전 이상의 경우 ETag를 따옴표로 지정할 수 있습니다.

리소스가 존재하지 않는 경우에만 작업을 수행하려면 와일드카드 문자(*)를 지정합니다. 리소스가 존재하면 작업이 실패합니다.

버전 2013-08-15부터 Blob 가져오기(REST API)Blob 속성 가져오기(REST API) 작업은 여러 조건부 헤더를 지원합니다. 지원되는 조건부 헤더의 어떠한 조합도 지정할 수 있습니다. Blob 서비스는 다음 식에 따라 이러한 조건을 평가합니다.

If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)

또한 If-MatchIf-None-Match에 대한 값을 쉼표로 구분하여 여러 개 제공할 수도 있습니다. If-Match에 대한 값을 여러 개 지정하는 경우 Blob 서비스는 전체 식을 평가하기 전에 제공된 모든 값에 대한 논리적 OR 연산을 수행합니다. if-None-Match에 대한 값을 여러 개 지정하는 경우에는 전체 식을 평가하기 전에 논리적 AND 연산을 수행합니다. If-Modified-SinceIf-Unmodified-Since에 대한 값을 여러 개 지정하는 것은 지원되지 않으며 오류 코드 400(Bad Request)이 발생합니다.

이 기능은 HTTP/1.1 사양을 따르고 CDN(콘텐츠 배달 네트워크) 또는 프록시 서버가 실행 중 요청에 추가 조건부 헤더를 추가하는 시나리오를 처리하기 위해 사용됩니다. 조건부 헤더를 조합한 몇 가지 예는 다음과 같습니다.

예 1:

If-MatchIf-Modified-Since 헤더가 포함된 Blob 가져오기(REST API) 요청을 살펴보겠습니다. 다음 표에서는 헤더가 개별적으로 평가되는 경우의 결과와 헤더가 조합되어 평가되는 경우의 결과를 나타냅니다.

 

조건부 헤더 개별적으로 평가되는 경우의 결과 조합되어 평가되는 경우의 결과

If-Match

412(사전 조건 실패)

412(사전 조건 실패)

If-Modified-Since

200(정상)

If-Match

412(사전 조건 실패)

412(사전 조건 실패)

If-Modified-Since

304(수정 안 됨)

If-Match

200(정상)

200(정상)

If-Modified-Since

200(정상)

If-Match

200(정상)

304(수정 안 됨)

If-Modified-Since

304(수정 안 됨)

예 2:

If-None-MatchIf-Modified-Since 헤더가 포함된 요청을 살펴보겠습니다.

 

조건부 헤더 개별적으로 평가되는 경우의 결과 조합되어 평가되는 경우의 결과

If-None-Match

304(수정 안 됨)

200(정상)

If-Modified-Since

200(정상)

If-None-Match

200(정상)

200(정상)

If-Modified-Since

200(정상)

If-None-Match

200(정상)

200(정상)

If-Modified-Since

304(수정 안 됨)

If-None-Match

304(수정 안 됨)

304(수정 안 됨)

If-Modified-Since

304(수정 안 됨)

예 3:

If-Modified-Since, If-MatchIf-Unmodified-Since 헤더가 포함된 요청을 살펴보겠습니다.

 

조건부 헤더 개별적으로 평가되는 경우의 결과 조합되어 평가되는 경우의 결과

If-Modified-Since

200(정상)

412(사전 조건 실패)

If-Match

412(사전 조건 실패)

If-Unmodified-Since

200(정상)

If-Modified-Since

200(정상)

412(사전 조건 실패)

If-Match

200(정상)

If-Unmodified-Since

412(사전 조건 실패)

If-Modified-Since

304(수정 안 됨)

412(사전 조건 실패)

If-Match

200(정상)

If-Unmodified-Since

412(사전 조건 실패)

If-Modified-Since

304(수정 안 됨)

304(수정 안 됨)

If-Match

200(정상)

If-Unmodified-Since

200(정상)

예 4:

If-Modified-Since, If-None-Match, If-Unmodified-SinceIf-Match 헤더가 포함된 요청을 살펴보겠습니다.

 

조합 개별 http 상태 코드 Blob 상태 가져오기 결과

If-Modified-Since

200(정상)

200(정상)

If-None-Match

200(정상)

If-Unmodified-Since

200(정상)

If-Match

200(정상)

If-Modified-Since

200(정상)

412(사전 조건 실패)

If-None-Match

304(수정 안 됨)

If-Unmodified-Since

412(사전 조건 실패)

If-Match

200(정상)

If-Modified-Since

200(정상)

200(정상)

If-None-Match

304(수정 안 됨)

If-Unmodified-Since

200(정상)

If-Match

200(정상)

If-Modified-Since

304(수정 안 됨)

412(사전 조건 실패)

If-None-Match

200(정상)

If-Unmodified-Since

200(정상)

If-Match

412(사전 조건 실패)

If-Modified-Since

304(수정 안 됨)

412(사전 조건 실패)

If-None-Match

200(정상)

If-Unmodified-Since

412(사전 조건 실패)

If-Match

412(사전 조건 실패)

If-Modified-Since

304(수정 안 됨)

200(정상)

If-None-Match

200(정상)

If-Unmodified-Since

200(정상)

If-Match

200(정상)

If-Modified-Since

304(수정 안 됨)

412(사전 조건 실패)

If-None-Match

304(수정 안 됨)

If-Unmodified-Since

412(사전 조건 실패)

If-Match

200(정상)

2013-08-15 이전 버전에서 Blob 서비스 읽기 작업(Blob 가져오기(REST API)Blob 속성 가져오기(REST API))을 호출하는 경우와 버전에 관계없이 쓰기 작업을 호출하는 경우 다음 사항에 유의해야 합니다.

  • 요청에 If-None-MatchIf-Modified-Since 헤더가 모두 지정된 경우 If-None-Match에 지정된 조건에 따라 요청이 평가됩니다.

  • 요청에 If-MatchIf-Unmodified-Since 헤더가 모두 지정된 경우 If-Match에 지정된 조건에 따라 요청이 평가됩니다.

  • 위에 나열된 두 가지 조건부 헤더 조합을 제외하고, 요청에는 단일 조건부 헤더만 지정할 수 있습니다. 조건부 헤더를 두 개 이상 지정하면 상태 코드 400(Bad Request)이 발생합니다.

  • 응답에 ETag가 포함된 경우 ETag를 처리하기 전에 요청 및 응답의 버전의 확인합니다. 예를 들어 버전 2011-08-18 이상은 따옴표로 묶인 ETag를 반환하지만 이전 버전은 그렇지 않습니다. 응용 프로그램에서 평가를 수행하기 전에 두 가지 ETag 형식을 모두 처리할 수 있는지 확인하십시오.

  • RFC 2616에서는 단일 헤더에 여러 개의 ETag 값이 허용되지만 Blob 서비스에 대한 요청은 ETag 값을 하나만 포함할 수 있습니다. ETag 값을 두 개 이상 지정하면 상태 코드 400(Bad Request)이 발생합니다.

다음 표에서는 조건부 헤더를 지원하는 작업에 대해 설명합니다.

 

REST 작업

작업 유형

지원되는 조건부 헤더

Blob 복사(REST API)

읽기 및 쓰기

대상 blob에 대한 조건:

  • If-Modified-Since 

  • If-Unmodified-Since 

  • If-Match 

  • If-None-Match 

원본 blob에 대한 조건:

  • x-ms-source-if-modified-since 

  • x-ms-source-if-unmodified-since 

  • x-ms-source-if-match 

  • x-ms-source-if-none-match 

Blob 삭제(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

컨테이너 삭제(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

Blob 가져오기(REST API)

읽기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Blob 메타데이터 가져오기(REST API)

읽기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Blob 속성 가져오기(REST API)

읽기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

페이지 범위 가져오기(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Blob 임대(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

컨테이너 임대(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Blob 배치(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

블록 목록 배치(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

페이지 배치(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Blob 메타데이터 설정(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Blob 속성 설정(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

컨테이너 ACL 설정(REST API)

쓰기

If-Modified-Since

If-Unmodified-Since

컨테이너 메타데이터 설정(REST API)

쓰기

If-Modified-Since

스냅숏 Blob(REST API)

읽기

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

다음 Blob 서비스 데이터 작업에서는 조건부 헤더를 현재 지원하지 않습니다.

요청에 조건부 헤더가 포함되고 지정된 조건이 요청 중인 리소스에서 충족되지 않은 경우 Blob 서비스가 HTTP 응답 코드를 반환합니다. 반환된 응답 코드는 HTTP/1.1 프로토콜 사양(RFC 2616)을 따릅니다. Windows Azure .NET 라이브러리의 메서드는 이러한 응답 코드를 StorageClientException으로 전환하고 StatusCode 속성에 System.Net.HttpStatusCode 열거의 값을 채웁니다. 조건부 작업으로 인해 발생한 예외를 처리하는 예제 코드를 보려면 Blob의 로컬 복사본 조건부 새로 고침을 참조하십시오.

다음 표에서는 작업이 읽기 작업일 때 각 조건부 헤더에서 충족되지 않은 조건에 대해 반환된 응답 코드를 보여줍니다. 읽기 작업에는 GET 또는 HEAD 동사가 사용됩니다.

 

조건부 헤더 조건이 충족되지 않은 경우의 응답 코드

If-Modified-Since

수정 안 됨(304(수정 안 됨))

If-Unmodified-Since

전제 조건 실패(412(전제 조건 실패))

If-Match

전제 조건 실패(412(전제 조건 실패))

If-None-Match

수정 안 됨(304(수정 안 됨))

버전 2013-08-15 이상에서 여러 헤더를 사용하는 경우의 결과는 위의 예들을 참조하십시오.

다음 표에서는 작업이 쓰기 작업일 때 각 조건부 헤더에서 충족되지 않은 조건에 대해 반환된 응답 코드를 보여줍니다. 쓰기 작업에는 PUT 또는 DELETE 동사가 사용됩니다.

 

조건부 헤더 조건이 충족되지 않은 경우의 응답 코드

If-Modified-Since

전제 조건 실패(412(전제 조건 실패))

If-Unmodified-Since

전제 조건 실패(412(전제 조건 실패))

If-Match

전제 조건 실패(412(전제 조건 실패))

If-None-Match

전제 조건 실패(412(전제 조건 실패))

다음 표에서는 작업이 복사 작업일 때 각 조건부 헤더에서 충족되지 않은 조건에 대해 반환된 응답 코드를 보여줍니다. Blob 복사(REST API) 작업에는 PUT 동사가 사용됩니다.

 

조건부 헤더 조건이 충족되지 않은 경우의 응답 코드

If-Modified-Since

전제 조건 실패(412(전제 조건 실패))

If-Unmodified-Since

전제 조건 실패(412(전제 조건 실패))

If-Match

전제 조건 실패(412(전제 조건 실패))

If-None-Match

전제 조건 실패(412(전제 조건 실패))

x-ms-source-if-modified-since

전제 조건 실패(412(전제 조건 실패))

x-ms-source-if-unmodified-since

전제 조건 실패(412(전제 조건 실패))

x-ms-source-if-match

전제 조건 실패(412(전제 조건 실패))

x-ms-source-if-none-match

전제 조건 실패(412(전제 조건 실패))

참고 항목

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft