DevToolPal
VI
4xx Lỗi phía máy khách

412 Precondition Failed

Điều kiện tiên quyết thất bại

Ý nghĩa

Một điều kiện trong header yêu cầu, như If-Match hoặc If-Unmodified-Since, cho kết quả sai, nên máy chủ không áp dụng yêu cầu.

Nguyên nhân thường gặp

  • Người khác đã cập nhật tài nguyên (ETag đã đổi)
  • Dùng ETag cũ đã lưu đệm trong If-Match
  • Tải lên có điều kiện vào kho lưu trữ đã có đối tượng mới hơn

Cách khắc phục

Nếu bạn là máy khách hoặc người truy cập

GET lại tài nguyên để lấy ETag hiện tại, áp dụng lại thay đổi và gửi lại.

Nếu bạn quản lý trang web hoặc API

Trả ETag hiện tại và thực hiện kiểm tra điều kiện nguyên tử cùng với thao tác ghi.

Phản hồi mẫu

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\"."
}

Đặc tả

RFC 9110 §15.5.13

Câu hỏi thường gặp

› Kiểm soát đồng thời lạc quan là gì?

Client gửi If-Match kèm ETag đã đọc; máy chủ từ chối ghi bằng 412 nếu tài nguyên đã thay đổi trong lúc đó.

› 412 hay 428?

412: điều kiện của bạn không thỏa. 428: bạn bắt buộc phải gửi điều kiện.