Nuevo en Symfony 4.1: redirecciones 307 and 308

En las aplicaciones web es habitual usar el código de estado HTTP 301 para hacer redirecciones permanentes y el código 302 para las redirecciones temporales. No obstante, un problema de estas redirecciones es que cuando se hacen sobre una petición de tipo POST, esta se transforma en GET por razones históricas (redireccionar peticiones POST no funcionaba bien en los navegadores antiguos).

Para resolver este problema, el estándar HTTP introdujo dos nuevos códigos de estado:

  • 307 (Temporary Redirect): definido en el RFC 7231 y similar to 302 (Found), salvo que no permite cambiar el método de la petición de POST a GET.
  • 308 (Permanent Redirect): definido en RFC 7538 y similar to 301 (Moved Permanently), salvo que no permite cambiar el método de la petición de POST a GET.

En Symfony 4.1 hemos añadido soporte para estos nuevos tipos de redirecciones mediante el nuevo argumento keepRequestMethod de los métodos redirectAction() y urlRedirectAction() de la clase RedirectController. También puedes hacer uso de esta opción mediante el parámetro keepRequestMethod de la definición de tus rutas:

ruta_que_resulta_en_el_codigo_301:
    # ...
    defaults:
        # ...
        permanent: true

ruta_que_resulta_en_el_codigo_302:
    # ...
    defaults:
        # ...
        permanent: false

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

ruta_que_resulta_en_el_codigo_308:
    # ...
    defaults:
        # ...
        permanent: true
        keepRequestMethod: true

Esta funcionalidad fue contribuida por Paweł Smoliński en el pull request #26213.

Fuente: New in Symfony 4.1: 307 and 308 redirections

Comentarios

Publicada el

2 de marzo de 2018

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Descargas totales de Symfony

1.536.693.939

Ver descargas en tiempo real

Síguenos en @symfony_es para acceder a las últimas noticias.