428 Precondition Required(RFC 6585)는 원본 서버가 조건부 요청을 요구한다는 뜻입니다. 이 코드는 “변경 사항 유실(lost update)” 문제를 막습니다. 클라이언트가 리소스를 읽고 수정한 뒤 PUT으로 다시 쓰면서, 그사이 다른 사람이 변경한 내용을 덮어쓰는 문제입니다.
서버는 조건 없는 쓰기 요청에 428로 응답해, 클라이언트가 읽어 온 ETag를 담아 If-Match를 보내도록 강제합니다. 그러면 리소스가 변경된 경우 조건부 요청이 데이터를 조용히 덮어쓰는 대신 412 Precondition Failed로 실패합니다. 응답에는 요청을 다시 제출해 성공하는 방법을 설명해야 합니다.
응답 예시
HTTP
HTTP/1.1 428 Precondition Required
Date: Fri, 06 Nov 2026 10:15:32 GMT
Content-Type: application/json
Content-Length: 71
{"error":"Send If-Match with the current ETag to update this resource"} SEO 및 리디렉션 검사
SEO에는 영향이 없습니다. 428은 API와 공동 편집의 쓰기 요청에 적용되며, 크롤러의 GET 요청으로는 발생하지 않습니다.
주요 원인과 사용 사례
- API가
PUT,PATCH,DELETE에If-Match를 요구하는데 클라이언트가 보내지 않았습니다. - 공동 문서 편집 서비스가 낙관적 잠금을 강제합니다.
- ETag를 지원하지 않는 클라이언트 라이브러리가 이런 API와 통신합니다.