O servidor não vai arriscar processar uma requisição que pode ser repetida.
Quando usar
Dados antecipados do TLS (0-RTT).
Causas comuns e soluções
O 425 está ligado aos early data do TLS 1.3, também chamados de 0-RTT: um cliente que retorna pode enviar a requisição junto com o primeiro pacote do handshake, mas um atacante pode reproduzir esses dados. Um servidor ou CDN que recebe em early data uma requisição com efeitos colaterais pode responder 425, e o cliente a reenvia depois que o handshake termina. Proxies marcam essas requisições com o cabeçalho Early-Data: 1.
Você raramente lida com ele diretamente, porque os navegadores tentam de novo automaticamente. Ele importa quando você ativa o 0-RTT, por exemplo ssl_early_data on no nginx: repasse a flag com proxy_set_header Early-Data $ssl_early_data e faça a aplicação retornar 425 para requisições POST ou qualquer GET que altere estado. Se não puder garantir isso, mantenha o 0-RTT desligado.
Erro do cliente (4xx)
Os códigos 4xx são erros do cliente: a própria requisição está errada, não está autorizada ou aponta para algo que não existe. Repetir a mesma requisição não vai adiantar.
Como fica
HTTP/1.1 425 Too EarlyComo enviar
| Node.js / Express | res.status(425).end() |
|---|---|
| Python / Flask | return '', 425 |
| nginx | return 425; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/