Código de status HTTP · Erros do cliente (4xx)
Erro 423 Locked
O erro 423 Locked significa que o recurso que você tentou alterar, ou o destino dele, tem um lock WebDAV e você não apresentou o token. A causa comum é outro usuário, ou um cliente que travou, ainda segurando o arquivo aberto para edição.
| Classe | 4xx, Erros do cliente |
|---|---|
| Definido em | RFC 4918 §11.3 |
| Pode ir para o cache por padrão | Só com Cache-Control ou Expires explícitos |
| Pode repetir o pedido | Sim, quando o lock for liberado ou expirar, ou na hora se você tiver o token do lock |
| Cabeçalhos relevantes |
|
O que significa o 423
A RFC 4918, seção 11.3, define o 423 para quando a origem ou o destino do método está bloqueado, e pede que o corpo traga um código de pré-condição como lock-token-submitted ou no-conflicting-lock. Aplicativos do Office editando arquivos no SharePoint, Nextcloud ou ownCloud pegam um lock exclusivo com o método LOCK para duas pessoas não sobrescreverem o trabalho uma da outra.
O lock tem prazo de validade, então um lock esquecido por um notebook que foi fechado costuma sumir sozinho. Até lá, PUT, MOVE, DELETE e PROPPATCH naquele arquivo respondem 423.
Causas comuns
Se você está visitando o site
- Um colega está com o documento aberto no Word ou Excel por uma pasta sincronizada ou unidade de rede.
- O seu próprio editor travou ou perdeu a conexão com o arquivo aberto, e o lock ficou para trás.
Se você administra o servidor
- Um cliente WebDAV manda PUT ou MOVE sem o cabeçalho If com o token recebido no LOCK.
- Timeout de lock muito longo (ou Infinite), então locks abandonados nunca expiram.
Como resolver
Se você está visitando o site
- Peça para quem está com o arquivo aberto fechá-lo, ou espere o timeout do lock passar.
- No Nextcloud, um administrador pode limpar locks presos (occ files:scan, ou o app files_lock se estiver instalado); no SharePoint, fechar o arquivo em todos os dispositivos libera o lock.
Se você administra o servidor
- Faça o cliente guardar o Lock-Token da resposta do LOCK e devolvê-lo como If: (<token>) em toda escrita.
- Use timeouts de lock finitos, na casa dos minutos, e deixe o cliente renová-los enquanto o arquivo estiver aberto.
Como enviar um 423
app.put('/files/:name', (req, res) => {
res.status(423).json({ error: 'File is locked by another client' });
});// app/files/[name]/route.ts
export async function PUT() {
return Response.json(
{ error: 'File is locked by another client' },
{ status: 423 }
);
}mux.HandleFunc("PUT /files/{name}", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusLocked) // 423
w.Write([]byte(`{"error":"File is locked by another client"}`))
})from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.put("/files/{name}")
def put_file(name: str):
raise HTTPException(status_code=423, detail="File is locked by another client")Costuma ser confundido com
- 423 vs 409
- O 409 é um conflito genérico com o estado do recurso; o 423 aponta a razão exata, um lock ativo nas mãos de outra pessoa.
- 423 vs 403
- O 403 vale enquanto suas credenciais forem as mesmas; o 423 some quando o lock é liberado, com as mesmas credenciais.
Perguntas frequentes
- Quanto tempo dura um lock WebDAV?
- O tempo que o cliente pediu no LOCK e o servidor aceitou, geralmente de alguns minutos a uma hora. O cliente renova enquanto o arquivo está aberto; quando para de renovar, o lock expira e os 423 acabam.
- O erro 423 aparece fora do WebDAV?
- Algumas APIs REST usam 423 para registros bloqueados para edição ou contas bloqueadas temporariamente, mas é um uso informal. O significado registrado é o do WebDAV, na RFC 4918.
- Erro 423 é o mesmo que arquivo somente leitura?
- Não. Um arquivo somente leitura é recusado com 403 para todo mundo, o tempo todo. Um lock 423 pertence a um dono e termina quando ele desbloqueia ou quando o prazo acaba.
Revisado em por Arielton Oberek.