Código de status HTTP · Sucesso (2xx)
203 Non-Authoritative Information
O 203 Non-Authoritative Information significa que o pedido deu certo, mas um proxy de transformação alterou o conteúdo que o servidor de origem enviou no 200. Quase nunca aparece: a maioria dos proxies que reescrevem conteúdo, como compressores de imagem ou banners injetados, mantém o status 200.
| Classe | 2xx, Sucesso |
|---|---|
| Definido em | RFC 9110 §15.3.4 |
| Pode ir para o cache por padrão | Sim, de forma heurística |
| Pode repetir o pedido | Não é preciso; o pedido deu certo |
| Cabeçalhos relevantes |
|
O que significa o 203
A RFC 9110, seção 15.3.4, permite que um proxy que transformou o conteúdo (seção 7.7) avise quem recebe, porque isso pode importar depois: uma revalidação desse conteúdo talvez só faça sentido pela mesma cadeia de proxies. Assim como o 200, o 203 pode ser armazenado em cache de forma heurística.
Servidores de origem não devem enviar 203 sobre o próprio conteúdo. Se você mantém a origem e não quer intermediários recomprimindo imagens ou minificando HTML, envie Cache-Control: no-transform, que a RFC 9111 manda os proxies respeitarem.
Quando usar
- Só num proxy ou gateway que reescreve um 200 vindo do upstream: tradução, minificação, recompressão ou filtragem do corpo.
Como enviar um 203
Só um proxy que transforma conteúdo deve emitir 203, por isso há um exemplo só, em vez da série de frameworks.
// A proxy that rewrites upstream HTML says so with 203
app.get('/*path', async (req, res) => {
const upstream = await fetch(`https://origin.example${req.originalUrl}`);
const html = (await upstream.text()).replaceAll('http://', 'https://');
res
.status(upstream.status === 200 ? 203 : upstream.status)
.type('html')
.send(html);
});Costuma ser confundido com
- 203 vs 200
- O 200 é a resposta da própria origem; o 203 é essa mesma resposta depois que um intermediário alterou o conteúdo.
Perguntas frequentes
- Por que quase nunca vejo um 203?
- Poucos proxies se dão ao trabalho de mudar o status quando alteram o conteúdo; a maioria mantém 200. Um 203 geralmente indica um proxy corporativo ou de operadora que segue a especificação à risca.
- Como impedir que proxies alterem minhas respostas?
- Envie Cache-Control: no-transform e sirva por HTTPS. Proxies que seguem o padrão não podem transformar conteúdo marcado com no-transform, e o HTTPS impede que proxies no meio do caminho leiam o corpo.
- Uma resposta 203 pode ir para o cache?
- Pode. A RFC 9110 torna o 203 armazenável de forma heurística, igual ao 200, a menos que o método ou controles explícitos de cache digam o contrário.
Revisado em por Arielton Oberek.