302 Found
Uso
Cuando se recibe el código de estado 302 Found, el cliente entiende que el recurso solicitado se ha trasladado temporalmente. Una segunda solicitud recupera el recurso en la nueva ubicación. Esto resulta más sencillo que un 301, porque no se espera que el cliente actualice sus enlaces internos.
Nota
Por compatibilidad con versiones anteriores, se permite que el cliente cambie el método de la solicitud de POST a GET al seguir la redirección. Para eliminar la ambigüedad, el servidor devuelve en su lugar un código de estado alternativo. El código 303 indica que la redirección debe usar el método GET, mientras que el código 307 exige conservar el método original.
Entre los desencadenantes habituales de las respuestas 302 están el paso de HTTP a HTTPS (que suele resolverse mejor con un 301), la normalización de URL (barra final), las pruebas A/B, el enrutamiento de contenido según la geolocalización y las redirecciones temporales por mantenimiento.
Nota
Un 302 es una redirección correcta, no un error. El servidor encontró el recurso y dirige al cliente a su ubicación actual. Para resolver redirecciones 302 no deseadas: compruebe que la redirección es intencionada, conviértala en un 301 si el traslado es permanente y revise la configuración del CMS o el .htaccess en busca de reglas añadidas por error.
Capacidad de caché
Una respuesta 302 no es almacenable en caché de forma predeterminada. A diferencia de 301 y 308, un 302 necesita cabeceras Cache-Control o Expires explícitas para que las cachés la almacenen.
Impacto en SEO
Google interpreta un 302 como una señal débil de que el destino de la redirección es la URL preferida, a diferencia del 301, que es una señal fuerte. Google procesa la URL de origen o la de destino. Un 302 mantenido a largo plazo puede acabar tratándose como una redirección permanente, de modo que un cambio permanente se resuelve mejor con un 301.
Ejemplo
El cliente solicita un recurso que se ha trasladado temporalmente. El servidor indica la nueva ubicación y facilita un mensaje pertinente para mostrarlo en el lado del cliente.
Solicitud
GET /news.html HTTP/1.1
Host: example.com
Respuesta
HTTP/1.1 302 Found
Location: http://example.com/testing/news.html
Content-Type: text/html
Content-Length: 167
<h1>The Newsfeed has moved</h1>
<body>
The site is under development and the newsfeed has
temporarily moved to
<a href=/testing/news.html>here</a>.
</body>
Referencias de código
.NET
HttpStatusCode.Found
Rust
http::StatusCode::FOUND
Rails
:found
Go
http.StatusFound
Symfony
Response::HTTP_FOUND
Python3.5+
http.HTTPStatus.FOUND
Java
java.net.HttpURLConnection.HTTP_MOVED_TEMP
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_MOVED_TEMPORARILY
Angular
@angular/common/http/HttpStatusCode.Found