Novidade no Symfony 4.1: Redirecionamentos 307 e 308

Andréia Bohner
1 min readMar 17, 2018

--

Em aplicações web é comum usar o código de status HTTP 301 para redirecionar permanentemente e o código 302 para redirecionar temporariamente. No entanto, um problema com esses tipos de redirecionamento é que uma requisição POST é transformada em uma requisição GET ao fazer o redirecionamento por motivos legados (o redirecionamento de uma requisição POST não funcionava bem em navegadores antigos).

Para resolver esses problemas, o padrão HTTP adicionou dois novos códigos de status:

  • 307(Redirecionamento temporário): definido na RFC 7231 e semelhante ao 302 (Encontrado), exceto que não permite a alteração do método da requisição de POST para GET.
  • 308(Redirecionamento permanente): definido na RFC 7538 e semelhante ao 301 (Movido Permanentemente), exceto que não permite alterar o método da requisição de POST para GET.

No Symfony 4.1, foi adicionado suporte para esses novos tipos de redirecionamentos, adicionando um novo argumento keepRequestMethod aos métodos redirectAction() e urlRedirectAction() do RedirectController. Você também pode usá-lo como a opção keepRequestMethod nas definições de rota:

route_301:
# ...
defaults:
# ...
permanent: true

route_302:
# ...
defaults:
# ...
permanent: false

route_307:
# ...
defaults:
# ...
permanent: false
keepRequestMethod: true

route_308:
# ...
defaults:
# ...
permanent: true
keepRequestMethod: true

Tradução de: New in Symfony 4.1: 307 and 308 redirections

--

--