This page was translated from English by the community.Learn more and join the MDN Web Docs community.
If-Match header
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015년 7월.
HTTPIf-Matchrequest header 는조건부 요청을 생성합니다.서버는If-Match 요청 헤더가ETag 값들 중 하나와 일치하는 경우에만GET 와HEAD 메서드에 대한 자원을 반환하거나PUT 혹은 안전하지 않은 메서드를 통해 자원을 업로드합니다.만일 조건이 일치하지 않으면412 Precondition Failed 응답이 반환됩니다.
저장된ETag 와의 비교는 강력 비교 알고리즘을 사용하는데, 이는 두 파일이 바이트 단위로 완전히 동일할 때에만 같은 것으로 취급됩니다.나열된ETag 값이W/ 접두어를 가지고 있다면 이는 취약한 엔티티 태그를 나타내며, 이 비교 알고리즘은 절대 일치하지 않습니다.
다음 두 개의 일반적인 경우를 확인하세요.
GET와HEAD메서드의 경우,Range헤더와 결합하면 새로 요청된 범위가 이전과 동일한 출처에서 왔음을 보장합니다.- 다른 메서드들, 특히
PUT메서드의 경우에는If-Match가lost update problem 을 방지하는데 사용될 수 있습니다. 사용자가 업로드하려는 리소스의 수정이 원본 리소스를 가져온 이후에 이루어진 다른 변경을 덮어쓰지 않음을 확인할 수 있습니다.
| Header type | Request header |
|---|---|
| Forbidden request header | No |
In this article
구문
If-Match: <etag_value>If-Match: <etag_value>, <etag_value>, …지시어
<etag_value>엔티티 태그가 요청된 자원을 고유하게 나타냅니다.
"675af34563dc-tr34"처럼 쌍따옴표 안에ASCII 문자열이 위치합니다.W/접두사가 존재하면 이는 취약한 형태가 되며 바이트 단위가 아닌 의미상의 리소스를 나타냅니다.그러나If-Match헤더에서는 취약한 엔티티 태그는 절대로 일치하지 않습니다.*이는 모든 자원을 나타내는 특수한 값입니다.원천 서버가 대상 자원에 대한 현재 표현을 원본 서버가 가지고 있지 않으면 이 값은
false와 일치해야 합니다.
예제
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"If-Match: "67ab43", "54ed21", "7892dd"If-Match: *명세서
| Specification |
|---|
| HTTP Semantics> # field.if-match> |
브라우저 호환성
같이 보기
ETagIf-None-Match,If-Modified-Since,If-Unmodified-Sinceconditional request headers412 Precondition Failed