Engenharia · 11 de setembro de 2026

Código de status HTTP 419 — o que significa e como corrigir

O código de status HTTP 419 não é um código IANA oficial. Aqui está de onde vem, por que você está vendo e como resolver em sua aplicação.

Você está debugando uma chamada de API e seu cliente HTTP retorna 419. Você verifica o registro oficial do IANA — não está lá. Você pesquisa no MDN — nada. O que é HTTP 419, e por que seu servidor está enviando?

A resposta curta

HTTP 419 não é um código de status HTTP oficial. Nunca foi definido em nenhuma RFC nem registrado no IANA. É um código de status personalizado usado por frameworks específicos — mais notavelmente Laravel (PHP) — para indicar que um token CSRF expirou ou está faltando.

Se você está vendo 419, sua requisição:

  1. Não incluiu um token CSRF de jeito nenhum, ou
  2. Incluiu um token CSRF que expirou (o padrão do Laravel é 120 minutos), ou
  3. O cookie de sessão foi perdido entre requisições

De onde vem HTTP 419

O Laravel define este código de status em seu handler de exceções. Quando uma requisição POST, PUT, PATCH ou DELETE atinge uma rota protegida pelo middleware VerifyCsrfToken e o token é inválido, o Laravel responde com:

HTTP/1.1 419 Page Expired

O texto “Page Expired” é a frase de razão padrão do Laravel para 419. Não está descrevendo uma página — está descrevendo o estado da sessão ao qual o token CSRF da página estava vinculado.

Como corrigir HTTP 419

Se você está construindo um aplicativo Laravel

Para formulários de navegador (renderização tradicional):

A causa mais comum é um timeout de sessão. O usuário abre um formulário, se afasta por duas horas e submete. O token CSRF era válido quando a página carregou, mas a sessão expirou desde então.

Soluções:

  1. Estenda o tempo de vida da sessão em config/session.php:
// O padrão é 120 minutos
'lifetime' => 480, // 8 horas
  1. Adicione atualização de token do lado do cliente — ao carregar a página, faça uma requisição AJAX leve para obter um novo token CSRF:
<meta name="csrf-token" content="{{ csrf_token() }}">
// Atualize o token a cada 30 minutos
setInterval(() => {
  fetch('/api/csrf-token', {
    headers: { 'X-Requested-With': 'XMLHttpRequest' }
  }).then(r => r.json()).then(data => {
    document.querySelector('meta[name="csrf-token"]').content = data.token;
  });
}, 30 * 60 * 1000);
  1. Lide com 419 graciosamente no cliente — capture a resposta 419 e redirecione para o login ou recarregue a página:
fetch('/api/save', { method: 'POST', body: formData })
  .then(response => {
    if (response.status === 419) {
      // Sessão expirada — recarregue para obter novo token
      window.location.reload();
    }
    return response.json();
  });

Se você está consumindo uma API Laravel

Se você está chamando uma API Laravel de um aplicativo móvel, SPA ou serviço externo e obtendo 419:

  1. Verifique seu gerenciamento de sessão/cookie. A API pode esperar cookies de sessão. Certifique-se de que seu cliente HTTP envia e recebe cookies.

  2. Use autenticação baseada em token em vez disso. Para consumidores de API, tokens do Laravel Sanctum ou Laravel Passport não têm o mesmo problema de expiração de CSRF. Use cabeçalhos Authorization: Bearer <token> em vez de cookies de sessão.

  3. Reautentique-se. Se a sessão expirou, a única solução é fazer login novamente e obter uma nova sessão.

Se você é de DevOps / infraestrutura

Se você está vendo 419 nos logs do seu balanceador de carga ou gateway de API:

  1. Verifique se o backend é Laravel. 419 é quase sempre CSRF do Laravel.
  2. Verifique o armazenamento de sessão. Se o Redis ou o armazenamento de sessão baseado em arquivo estiver cheio ou mal configurado, as sessões podem expirar prematuramente.
  3. Verifique a sincronização de relógio. Se os servidores da sua aplicação tiverem relógios dessincronizados, os cálculos de expiração de sessão podem estar errados.

Como verificar códigos de status HTTP

Se você está debugando respostas de API e precisa consultar rapidamente o que um código de status significa, pode usar uma ferramenta de referência. Nossa referência de códigos de status HTTP tem todos os 63 códigos oficiais com descrições e pesquisa.

Códigos de status relacionados | Código | Significado | Relação | |––––|———––|———| | 401 | Não autorizado | Token de autenticação faltando ou inválido | | 403 | Proibido | Autenticado mas não permitido | | 408 | Tempo limite da requisição | Servidor esgotou o tempo esperando a requisição | | 419 | Página expirada | Token CSRF expirado (específico do Laravel) | | 440 | Tempo limite de login | Outra variante específica do framework | | 503 | Serviço indisponível | Servidor está fora do ar ou sobrecarregado |

Resumo

HTTP 419 é o Laravel dizendo “sua sessão expirou, não posso confiar nesta requisição.” Não é um bug — é um recurso de segurança funcionando como projetado. A solução é estender o tempo de vida da sessão, atualizar tokens do lado do cliente ou mudar para tokens de API para acesso programático.