Skip to content

Código de status HTTP · Erros do cliente (4xx)

Erro 424 Failed Dependency

O erro 424 Failed Dependency significa que o servidor não executou uma ação porque ela dependia de outra ação do mesmo pedido, e essa outra falhou. Ele aparece quase sempre dentro de respostas 207 Multi-Status do WebDAV, ao lado da entrada que causou o erro de verdade.

Dados sobre este código de status
Classe4xx, Erros do cliente
Definido emRFC 4918 §11.4
Pode ir para o cache por padrãoSó com Cache-Control ou Expires explícitos
Pode repetir o pedidoSó depois de corrigir a ação da qual dependia; reenviar o lote igual falha do mesmo jeito
Cabeçalhos relevantesNenhum específico deste código

O que significa o 424

A RFC 4918, seção 11.4, dá o exemplo clássico: o PROPPATCH é atômico, então se definir uma propriedade falha, todas as outras mudanças do mesmo pedido são reportadas como 424. As entradas 424 são efeito colateral; a que tem outro código (403, 409, 507) é o problema real.

Fora do WebDAV, algumas APIs de lote e de workflow usam 424 para uma etapa pulada porque a anterior falhou. É uma extensão da ideia, não algo que a RFC define.

Causas comuns

Se você administra o servidor

  • Uma propriedade do PROPPATCH é protegida ou inválida, o que derruba a atualização atômica inteira e marca o resto como 424.
  • Numa API de lote, uma operação anterior (criar o cliente) falhou, então a dependente (criar a fatura desse cliente) nem foi tentada.

Como resolver

Se você administra o servidor

  • Ignore as entradas 424 num primeiro momento e procure no corpo do 207 a entrada com outro status; corrigir essa resolve as demais.
  • Ao projetar um endpoint de lote, reporte a etapa que falhou com o código dela e as puladas com 424, para o cliente separar causa de consequência.

Como diagnosticar o 424

É raro mandar 424 na linha de status. Ele vive dentro do corpo de um 207 Multi-Status, com um status por recurso ou propriedade, como nesta resposta de PROPPATCH.

Terminal
curl -X PROPPATCH https://dav.example.com/docs/report.odt \
  -H 'Content-Type: application/xml' --data @props.xml

# HTTP/1.1 207 Multi-Status
# <D:propstat>
#   <D:prop><D:getetag/></D:prop>
#   <D:status>HTTP/1.1 403 Forbidden</D:status>        <- the real cause
# </D:propstat>
# <D:propstat>
#   <D:prop><Z:author/></D:prop>
#   <D:status>HTTP/1.1 424 Failed Dependency</D:status> <- skipped
# </D:propstat>

Costuma ser confundido com

424 vs 207
O 207 é o envelope que carrega um status por item; o 424 é um dos status que podem aparecer lá dentro.
424 vs 502
O 502 indica que um servidor upstream respondeu mal; o 424 indica que outra ação dentro do mesmo pedido falhou, não outro servidor.

Perguntas frequentes

Por que todas as propriedades do meu PROPPATCH falharam com 424?
O PROPPATCH é tudo ou nada. Uma propriedade falhou por um motivo real, e a RFC 4918 manda o servidor reportar as outras como 424 porque dependiam do pedido inteiro dar certo. Procure a entrada com outro código.
Uma API REST deve usar 424?
Pode, em operações de lote ou em várias etapas, quando uma etapa foi pulada porque a anterior falhou. Para uma chamada isolada a outro serviço que falhou, 502 ou 503 descreve melhor a situação.
O erro 424 é problema do cliente ou do servidor?
Está na faixa 4xx, então a correção normalmente está no pedido: a ação que falhou de fato foi recusada por causa do que o cliente pediu, como alterar uma propriedade protegida.

Revisado em por Arielton Oberek.