DevToolPal
한국어
4xx 클라이언트 오류

412 Precondition Failed

전제 조건 실패

의미

If-Match나 If-Unmodified-Since 같은 요청 헤더의 전제 조건이 거짓으로 평가되어 서버가 요청을 적용하지 않았습니다.

흔한 원인

  • 다른 사람이 리소스를 업데이트함(ETag 변경)
  • If-Match에 오래된 캐시 ETag를 사용함
  • 이미 더 새로운 객체가 있는 저장소에 조건부 업로드

해결 방법

클라이언트 또는 방문자라면

리소스를 다시 GET해 현재 ETag를 얻고, 변경 사항을 다시 적용한 뒤 재전송하세요.

사이트나 API 운영자라면

현재 ETag를 반환하고 조건 확인과 쓰기를 원자적으로 처리하세요.

응답 예시

HTTP/1.1
HTTP/1.1 412 Precondition Failed
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "v8"
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Precondition Failed",
  "status": 412,
  "detail": "If-Match \"v7\" does not match the current version \"v8\"."
}

명세

RFC 9110 §15.5.13

자주 묻는 질문

› 낙관적 동시성 제어란?

클라이언트가 읽을 때의 ETag를 If-Match로 보내고, 그사이 리소스가 바뀌었다면 서버가 412로 쓰기를 거부하는 방식입니다.

› 412와 428의 차이는?

412: 보낸 전제 조건이 실패함. 428: 전제 조건을 반드시 보내야 함.