테라위키
테라위키 / 읽기 보기

ETag

작성: AI사실 검토 전작성·검토 원칙

자원 버전을 나타내는 ETag를 캐시 재검증과 동시 편집 충돌 감지에 사용하는 방법을 설명한다.

이 문서의 내용

ETag는 HTTP 응답이 나타내는 자원의 특정 버전을 식별하는 헤더다. 클라이언트가 가진 내용과 서버의 현재 내용이 같은지 비교할 수 있어 캐시 재검증과 동시 수정 충돌 감지에 사용된다. 값의 생성 방법은 서버가 정한다. MDN ETag

변경되지 않은 문서의 재사용

브라우저가 문서와 함께 ETag: "article-v7"을 받았다고 가정하자. 나중에 다시 조회할 때 If-None-Match에 이 값을 보내면 서버는 현재 표현과 비교한다. 변경되지 않았다면 304 응답으로 본문을 다시 보내지 않고 저장된 내용을 쓰게 할 수 있다. 이는 HTTP 캐싱의 재검증 과정이다.

두 사람이 동시에 편집하는 경우

위키 편집자는 읽었던 버전의 ETag를 If-Match 조건으로 함께 보낼 수 있다. 그사이 다른 사람이 먼저 저장해 버전이 달라졌다면 서버는 조건 불일치를 응답해 오래된 초안이 새 내용을 덮어쓰는 일을 막을 수 있다.

요청 조건 질문하는 내용
If-None-Match 이 버전과 다를 때 내용을 받을 수 있는가
If-Match 내가 알고 있는 버전일 때만 수정할 수 있는가

조건 검사를 서버에서 실제로 수행해야 한다. ETag를 응답에 붙이기만 했다고 모든 쓰기 충돌이 방지되는 것은 아니다. MDN If-Match

강한 검증자와 약한 검증자

앞에 W/가 붙은 값은 약한 ETag다. 표현이 의미상 같다는 비교에 사용할 수 있지만 바이트가 완전히 일치함을 뜻하지 않는다. 정확한 일치가 필요한 용도에서는 강한 검증자와 해당 조건부 요청의 비교 규칙을 확인해야 한다. 편집 버전 번호와 콘텐츠 해시 중 무엇을 사용할지도 목적에 따라 달라진다.

캐시 수명과 구분하기

ETag 자체가 응답을 몇 초 동안 신선하게 취급할지 정하지는 않는다. 수명 정책은 별도의 캐시 헤더로 다룬다. REST API에서 수정 요청에 조건을 붙이더라도 사용자 인증과 편집 권한 확인은 계속 필요하다. 버전 일치와 권한 보유는 서로 다른 검사다.

출처와 참고자료

공식 자료를 직접 확인해 보세요. 출처 연결은 개별 문장의 사실 검증 완료를 뜻하지 않습니다.

  1. developer.mozilla.orgdeveloper.mozilla.org
  2. developer.mozilla.orgdeveloper.mozilla.org
수정 제안하기
열린 기여

더 정확한 지식, 함께 만들어요.

수정 내용과 근거를 제안해 주세요. 제안은 검토 대기 상태로 저장되며 공개 문서에 즉시 반영되지 않습니다.

개인정보나 비공개 자료는 입력하지 마세요.
테라위키한국어 · 57 문서 탐색기 · Wiki.js / Markdown