Una redirección 307 es un código de estado HTTP/1.1 para redirecciones temporales que preserva estrictamente el método de solicitud original. Si una solicitud POST recibe una respuesta 307, el navegador debe reenviar la solicitud POST a la nueva URL, a diferencia de una 302 que puede convertir la solicitud a GET. Esta preservación del método hace que la 307 sea útil para endpoints de API y envíos de formularios.
El código de estado 307 fue introducido para resolver la ambigüedad en la especificación 302. Mientras que la 302 se definió como una redirección temporal, se extendieron implementaciones de navegador que cambiaban las solicitudes POST a GET al seguir una redirección 302. El código 307 requiere explícitamente que el método de solicitud permanezca sin cambios, proporcionando un comportamiento predecible para los desarrolladores.
En el acortamiento de URL, un clic en una URL corta desde el navegador es una solicitud GET, por lo que la diferencia entre 307 y 302 no se manifiesta ahí. Sin embargo, la 307 se vuelve relevante cuando las URL cortas se utilizan en contextos de API o cuando el servicio de acortamiento necesita redirigir solicitudes POST sin alterar el método.
La diferencia práctica entre 302 y 307 es principalmente relevante para solicitudes que no son GET. Para la navegación estándar del navegador mediante clics en enlaces, ambas se comportan de manera idéntica. La elección importa al construir APIs o manejar envíos de formularios a través de cadenas de redirección.