O que significa
Uma pré-condição nos cabeçalhos, como If-Match ou If-Unmodified-Since, resultou falsa, então o servidor não aplicou a requisição.
Causas comuns
- Outra pessoa atualizou o recurso (o ETag mudou)
- ETag em cache desatualizado usado em If-Match
- Upload condicional para um armazenamento que já tem um objeto mais novo
Como resolver
Se você é o cliente ou visitante
Faça GET do recurso de novo para obter o ETag atual, reaplique suas alterações e reenvie.
Se você mantém o site ou a API
Retorne o ETag atual e torne as verificações condicionais atômicas com a escrita.
Resposta de exemplo
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\"."
} Especificação
Perguntas frequentes
› O que é controle de concorrência otimista?
Os clientes enviam If-Match com o ETag que leram; o servidor rejeita a escrita com 412 se o recurso mudou nesse meio-tempo.
› 412 ou 428?
412: sua pré-condição falhou. 428: você precisa enviar uma pré-condição.