HTTPQUERY
Español

307 Temporary Redirect

Uso

El código de estado 307 Temporary Redirect indica que el recurso de destino está disponible en otra URL. El cliente realiza una nueva solicitud a la URL especificada en la cabecera Location y no tiene permiso para cambiar el método de la solicitud. Esto se diferencia del código de estado 302, que permite al cliente pasar de POST a GET.

Cuando el comportamiento deseado es cambiar el método de la solicitud, el código de estado 303 es la alternativa recomendada. Por ejemplo, redirigir el envío de un formulario por POST a una página de confirmación emplea un 303 seguido de un GET.

El cliente debe repetir exactamente el mismo método, las mismas cabeceras y el mismo cuerpo hacia la nueva URL. El servidor procesa la solicitud redirigida con normalidad. Dado que el 307 Temporary Redirect no es persistente, se espera que las solicitudes futuras usen la URL original y revaliden el cambio temporal.

Su equivalente permanente es el 308, que conserva el método de la solicitud de forma idéntica, pero señala que el traslado es permanente y que los clientes deben actualizar los enlaces almacenados.

La respuesta no es almacenable en caché de forma predeterminada. Para hacer que la redirección sea almacenable en caché, añada una cabecera Cache-Control o Expires.

El código de estado 307 Temporary Redirect también funciona como redirección interna cuando se declara una política HSTS mediante la cabecera Strict-Transport-Security o la lista de precarga de HSTS. El cliente utiliza el código de estado para redirigir de HTTP a una conexión segura mediante HTTPS sin contactar con el servidor.

Nota

Los navegadores generan “307 Internal Redirect” en DevTools al actualizar HTTP a HTTPS mediante HSTS. Esta redirección ocurre por completo dentro del navegador, sin ninguna solicitud de red. En DevTools aparece la cabecera Non-Authoritative-Reason: HSTS. Los bucles de redirección 307 entre HTTP y HTTPS indican un conflicto entre HSTS y las reglas de redirección del lado del servidor. Asegúrese de que el servidor solo redirija en el puerto HTTP.

Nota

El 303 obliga a que la solicitud posterior use GET con independencia del método original, lo que convierte al 303 en el estándar para la redirección tras un POST. El 307 conserva el método y el cuerpo originales. El cliente reenvía el mismo POST/PUT/PATCH a la nueva URL.

Impacto en SEO

Google trata el 307 como una señal débil de que el destino de la redirección es la URL preferida, a diferencia del 301/308, que son señales fuertes. Google indexa o bien la URL de origen o bien la de destino. Un 307 mantenido a largo plazo puede acabar tratándose como una redirección permanente, por lo que un cambio permanente se resuelve mejor con un 308.

Ejemplo

El cliente solicita un recurso y el servidor responde con 307 Temporary Redirect porque el recurso está disponible en una ubicación alternativa.

Solicitud

GET /news.html HTTP/1.1
Host: example.com

Respuesta

HTTP/1.1 307 Temporary Redirect
Location: http://example.com/breaking/news.html

Referencias de código

.NET

HttpStatusCode.TemporaryRedirect

Rust

http::StatusCode::TEMPORARY_REDIRECT

Rails

:temporary_redirect

Go

http.StatusTemporaryRedirect

Symfony

Response::HTTP_TEMPORARY_REDIRECT

Python3.5+

http.HTTPStatus.TEMPORARY_REDIRECT

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_TEMPORARY_REDIRECT

Angular

@angular/common/http/HttpStatusCode.TemporaryRedirect