If-Unmodified-Since
요청 헤더 Conditional

개요

If-Unmodified-Since는 리소스가 지정한 시각 이후로 '변경되지 않았을 때만' 요청을 처리하도록 하는 조건부 요청 헤더입니다. 시각 기반의 동시 수정 충돌 방지에 쓰이며, If-Modified-Since의 반대 개념입니다.

자세히

클라이언트는 리소스를 읽을 때 받은 `Last-Modified` 값을 저장해 두었다가, 수정·삭제 요청에 If-Unmodified-Since로 담아 보냅니다. 서버는 리소스가 그 시각 이후로 바뀌지 않았는지 확인해, 안 바뀌었으면 요청을 처리하고, 그동안 누군가 바꿨으면 412 Precondition Failed로 거부합니다. 이렇게 로스트 업데이트를 막습니다.

ETag를 쓰는 If-Match와 목적이 같지만, 이쪽은 1초 해상도의 날짜를 사용합니다. 따라서 같은 초 안에 일어난 변경은 감지하지 못하는 한계가 있어, 정밀한 동시성 제어에는 If-Match가 더 안전합니다. ETag를 제공할 수 없는 서버의 대안으로 이해하면 됩니다.

부분 다운로드 재개에도 쓰입니다. Range 요청에 함께 실린 `If-Range`(날짜/ETag)와 개념적으로 인접하며, 리소스가 안 바뀐 경우에만 이어받도록 보장하는 흐름과 유사합니다.

문법

If-Unmodified-Since: <http-date>

e.g. If-Unmodified-Since: Wed, 21 Oct 2015 07:28:00 GMT

실무 참고

관련 헤더

관련 상태코드

스펙 근거