Novidade no Symfony 4.1: Redirecionamentos 307 e 308
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 ao302
(Encontrado), exceto que não permite a alteração do método da requisição dePOST
paraGET
.308
(Redirecionamento permanente): definido na RFC 7538 e semelhante ao301
(Movido Permanentemente), exceto que não permite alterar o método da requisição dePOST
paraGET
.
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