1
resposta

419 Page Expired mesmo com @csrf no Laravel9

Olá!

Estou seguindo na trilha Laravel e após implementar a funcionalidade de destroy com o botão no formzinho com action para delete, tudo conforme as aulas, notei que aparentemente após ficar longe do notebook por alguns instantes, o form para a action de destroy e para create deixaram de funcionar apresentando o erro 419 Page Expired.

Abri este novo tópico porque sim, implementei o @csrf no form tanto que havia funcionado instantes antes.

Experimentei parar e reiniciar o servidor, mudei o banco de SQLite para MySQL, usei o artisan com todos comandos clear, atribuí permissões de escritas mais permissivas em algumas pastas como storage, cache, etc; incluí a meta tag "csrf-token", tudo sem sucesso. Por fim, contornei este problema desabilitando a verificação do CSRF no middleware também segundo alguma orientação que encontrei mas sei que não é a solução.

Será que se trata de um bug do Laravel 9? Alguém poderia me ajudar?

Grata!

1 resposta

Oi Lourdilene! Tudo bem com você? Espero que sim.

Peço desculpa pela demora para responder o seu tópico.

Existem algumas possíveis razões pelas quais você está recebendo esse erro, mesmo após ter implementado corretamente o @csrf em seu formulário. Aqui estão algumas soluções que você pode tentar:

1 - Tenha certeza que você tem a diretiva @csrf dentro da tag <form> em seu arquivo de visualização. Verifique se você não removeu acidentalmente essa diretiva ou a moveu para outro lugar.

2 - Verifique se o middleware VerifyCsrfToken está habilitado em sua rota. Você pode encontrar o arquivo de "middleware" em "app/Http/Middleware/VerifyCsrfToken.php". Certifique-se de que as rotas que estão gerando o erro estejam excluídas do "middleware", caso contrário, o token CSRF será verificado e, se expirado, resultará no erro 419.

3 - O valor do token CSRF está sendo enviado corretamente com o formulário? Você pode verificar isso inspecionando o código-fonte da página e procurando a meta tag com o nome "csrf-token". Certifique-se de que o valor do token corresponda ao valor que está sendo enviado no formulário.

4 - Certifique-se de que a data e a hora em seu computador estejam configuradas corretamente. Se a data e a hora estiverem muito desatualizadas, o token CSRF pode expirar instantaneamente, resultando no erro 419.

Em relação à sua pergunta sobre ser um bug no Laravel 9, é difícil dizer sem mais informações. No entanto, é improvável ser um problema específico do Laravel 9, já que a funcionalidade CSRF existe há várias versões e é amplamente utilizada sem problemas. Geralmente, erros 419 Page Expired estão relacionados a configurações ou implementações específicas.

Espero que essas soluções possam ajudá-lo a resolver o problema. Caso tenha mais dúvidas ou problemas, estarei à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software