307 Temporary Redirect: qué es y cuándo usarla

Qué es una redirección 307 Temporary Redirect, cómo conserva estrictamente el método HTTP frente a una 302, dónde aparece (HSTS y traslados temporales) y cómo la trata Google para el SEO.

Publicado por primera vez: 28 jun 2026 · Última actualización: 8 ago 2026 · Avanzado
Idiomas
1 señal de evidencia en esta página

Una 307 Temporary Redirect significa para Google lo mismo que una 302: una señal débil y temporal que no transfiere el posicionamiento de la URL original al destino, así que no hay una razón de posicionamiento para preferir una sobre la otra. Su única diferencia real frente a una 302 es una garantía de la especificación: una 307 no debe cambiar el método ni el cuerpo de la solicitud, por lo que un POST sigue siendo un POST. Esto importa para formularios, API y frameworks modernos (Next.js usa 307 por defecto), pero no para las redirecciones normales de páginas GET. La 307 que más confunde no es una redirección en absoluto: es el artefacto exclusivo del navegador que produce HSTS al actualizar http a https, con un cuerpo de 0 bytes que el servidor nunca envió; un comprobador de redirecciones o una solicitud sencilla con curl (no solo una sesión de incógnito nueva, que no puede anular un dominio de la lista de precarga HSTS) muestra el código de estado real.

TL;DR — Una 307 es una redirección temporal que, según RFC 9110, «MUST NOT change the request method» (traducción) «NO DEBE cambiar el método de solicitud» —la única garantía firme que una 302 no ofrece—. Para el SEO es irrelevante: la documentación de Google la enumera como «Equivalent to 302» (traducción) «equivalente a 302» (una señal débil y temporal), y Mueller ha dicho que la elección entre 307 y 302 «doesn’t really matter» (traducción) «no importa realmente» para las búsquedas; la cuestión es si la redirección debe funcionar para tráfico POST/API. La 307 que realmente confunde a la gente es el artefacto HSTS: una «redirección» exclusiva del navegador, de 0 bytes, que el servidor nunca envió y que se produce cuando el navegador actualiza http a https por su cuenta. Tiene dos casos sin relación funcional, y mantenerlos separados es todo el trabajo.

Una 307 tiene dos casos completamente distintos

Esta es la idea organizadora de todo lo que sigue y procede directamente de mi guía de códigos de estado, donde la 307 tiene dos entradas separadas: «Redirección temporal 307: tiene la misma funcionalidad que una redirección 302, excepto que no puedes alternar entre POST y GET» y «Política HSTS 307: obliga al cliente a usar HTTPS al realizar solicitudes en lugar de HTTP». Comparten un número y casi nada más:

  1. 307 como redirección temporal real emitida por el servidor —elegida deliberadamente (o establecida como valor predeterminado por un framework) para conservar el método y el cuerpo HTTP en una solicitud que no sea GET.
  2. 307 como artefacto HSTS del navegador —no es una respuesta del servidor. El navegador actualiza internamente http a https y etiqueta esa actualización como una 307.

Confundir estos dos casos es la fuente más habitual de confusión con las 307. Los explicaré uno por uno.

Caso 1: la 307 real: qué exige exactamente la especificación

RFC 9110 (la especificación vigente de semántica HTTP) no deja lugar a dudas en §15.4.8:

“The 307 (Temporary Redirect) status code indicates that the target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI.” (traducción) «El código de estado 307 (Temporary Redirect) indica que el recurso de destino reside temporalmente bajo un URI diferente y que el agente de usuario NO DEBE cambiar el método de solicitud si realiza una redirección automática a ese URI».

Evidence for this claim RFC 9110 defines 307 Temporary Redirect as a temporary move and requires clients not to change the request method when following it automatically. Scope: HTTP semantics for real server 307 responses, not browser-internal HSTS displays. Confidence: high · Verified: IETF: RFC 9110 §15.4.8 — 307 Temporary Redirect

Ese «MUST NOT» es un requisito firme, no una sugerencia. Compáralo con la sección 302 (§15.4.3), que documenta abiertamente el desorden histórico que la 307 se creó para solucionar: la ambigüedad histórica POST→GET de la sección 302 y su remisión a la 307 como solución. En otras palabras, la 307 existe específicamente para eliminar la ambigüedad POST→GET que los clientes antiguos tenían con las 302.

MDN expone la versión práctica de esta misma distinción:

“The difference between 307 and 302 is that 307 guarantees that the client will not change the request method and body when the redirected request is made. With 302, older clients incorrectly changed the method to GET. 307 and 302 responses are identical when the request method is GET.” (traducción) «La diferencia entre 307 y 302 es que 307 garantiza que el cliente no cambiará el método ni el cuerpo de la solicitud cuando se realice la solicitud redirigida. Con 302, los clientes antiguos cambiaban incorrectamente el método a GET. Las respuestas 307 y 302 son idénticas cuando el método de solicitud es GET».

Esa última frase es la que más importa para el SEO. Casi todas las redirecciones que le interesan a un SEO —una página antigua hacia una nueva— son solicitudes GET, y para las solicitudes GET una 307 y una 302 son literalmente idénticas. La garantía de conservar el método solo importa cuando el método no es GET: reenvíos de formularios, endpoints de API, destinos de webhooks y envíos POST de procesos de pago o autenticación. La especificación garantiza el método y el cuerpo, pero no determina por sí sola cómo gestionará exactamente cada cliente las cabeceras, las credenciales o las solicitudes de origen cruzado al repetirla; por eso debes comprobarlo con tu cliente real en vez de asumir un comportamiento idéntico byte a byte. Si comparas ambos códigos directamente para un traslado normal de página, esa comparación se trata a fondo en el artículo específico sobre 302 frente a 307: este artículo da por conocido el concepto básico de redirección temporal del análisis detallado de la 302 y se centra en lo que es único de la 307.

302 frente a 303 frente a 307, en una tabla

Las tres están en la categoría «temporal» de RFC, pero no se comportan igual en los dos ejes que realmente importan: la conservación del método y la caché:

CódigoMétodo en la redirección automática¿Se puede guardar heurísticamente en caché?
302 FoundPuede cambiar POST a GET (comportamiento histórico de los clientes; no es un requisito de RFC)No
303 See OtherObtiene deliberadamente el destino con GET o HEADNo
307 Temporary RedirectNO DEBE cambiar el métodoNo

Ninguna de las tres se puede guardar heurísticamente en caché de forma predeterminada: una 307 (al igual que una 302 y una 303) necesita una señal explícita de frescura (Cache-Control, Expires, etc.) para que una caché la almacene sin volver a preguntar.

Caso 1, continuación: cómo trata Google una 307 real en el SEO

Versión corta: exactamente igual que una 302. La documentación de Google sobre códigos de estado HTTP enumera la fila de la 307 como «Equivalent to 302» y la fila de la 302, que hereda su comportamiento, explica lo que significa:

Google explica que los rastreadores siguen la redirección y usan el destino como una señal débil para procesarlo.

«Débil» es la palabra clave: una redirección temporal no consolida la canonicalización en el destino como lo hace una permanente. La documentación de Google sobre Redirecciones y Búsqueda de Google agrupa 302, 303 y 307 bajo «temporal» y describe directamente el comportamiento: “Googlebot follows the redirect, but the indexing pipeline doesn’t use the redirect as a signal that the redirect target should be canonical.” (traducción) «Googlebot sigue la redirección, pero el pipeline de indexación no usa la redirección como señal de que el destino de la redirección deba ser canónico». En la misma página, con el mismo encuadre de intención, dice: La misma página recomienda una redirección temporal cuando solo se quiere enviar a los usuarios a otra página por un tiempo.

Evidence for this claim Google's indexing pipeline does not use a temporary 302, 303, or 307 redirect as a signal that the redirect target should be canonical. Scope: redirect crawling, indexing, and canonicalization Confidence: high · Verified: Redirects and Google Search

Inmediatamente después de las filas de la 307 y la 308, Google añade la salvedad que merece quedar grabada en la pared:

Google recuerda que los códigos tienen semánticas distintas y recomienda usar el apropiado para que otros clientes también se beneficien.

Así que Google agrupa 307 y 302 para el posicionamiento, pero aun así te dice que elijas el código semánticamente correcto. Esa es toda la respuesta de SEO. Evidence for this claim Google treats 307 as equivalent to 302 for Search while noting that the HTTP semantics differ. Scope: Google Search redirect handling; clients still need the semantically appropriate status code. Confidence: high · Verified: Google: HTTP status codes and Search John Mueller lo expresó aún más claramente en el episodio 51 del programa Fuera de registro de la Búsqueda («Hablemos de redirecciones»), al explicar que «with 307, 308, it also forwards POST requests» —a diferencia de 301/302, que reenvían solicitudes GET— y rematar con esta idea:

Mueller resume que la elección importa poco para el SEO y más bien debe comprobarse si funciona para las API.

No hay ninguna ventaja de posicionamiento en cambiar tus redirecciones temporales a 307. La única razón válida para elegirla es conservar el método y el cuerpo, o —como preferencia general para estar preparado para el futuro— la que explicaré al final.

Caso 1, continuación: valores predeterminados de frameworks y CDN

Cada vez más preguntas del tipo «¿por qué es una 307?» no surgen de decisiones deliberadas, sino de los valores predeterminados de los frameworks. La función redirect() de Next.js usa una 307 por defecto, y la documentación explica expresamente el motivo bajo un encabezado titulado literalmente «Why does redirect use 307 and 308?»: «The redirect() method uses a 307 by default, instead of a 302 temporary redirect, meaning your requests will always be preserved as POST requests.» (traducción) «El método redirect() usa una 307 por defecto, en lugar de una redirección temporal 302, lo que significa que tus solicitudes siempre se conservarán como solicitudes POST». (Next.js usa específicamente una 303 dentro de Server Actions y ofrece una permanentRedirect() independiente para el caso 308). Si ves 307 que no has escrito a mano, comprueba si tu framework o plataforma edge las está estableciendo como valor predeterminado para redirecciones que no sean GET: normalmente esa es la explicación y normalmente es correcto.

Caso 2: la «307 fantasma» de HSTS que tu servidor nunca envió

Este es el territorio genuinamente poco cubierto y donde un artículo específico sobre 307 se gana su lugar. Cuando un sitio envía una cabecera Strict-Transport-Security (HSTS), le dice al navegador: a partir de ahora, cárgame siempre mediante https. En la siguiente solicitud a la versión http, el navegador actualiza a https por sí mismo, sin hablar con el servidor, y muestra esa actualización interna como una «307» en las herramientas de desarrollo y en los rastreadores.

John Mueller explicó la mecánica en su sitio personal:

Mueller describe una actualización HSTS interna que el navegador presenta como 307 aunque el servidor no la haya enviado.

El cuerpo de 0 bytes es la pista: como añade Mueller, esa 307 es solo un marcador interno, no una redirección real. Mi propia guía de redirecciones explica la consecuencia práctica para las auditorías: «When web servers require clients to only use HTTPS connections (HSTS policy), Google won’t see the 307 because it’s cached in the browser. The initial hit (without cache) will have a server response code that’s likely a 301 or a 302. But your browser will show you a 307 for subsequent requests which makes it more difficult to troubleshoot. You will need to use a fresh Incognito session to see the returned status code.» (traducción) «Cuando los servidores web exigen que los clientes usen únicamente conexiones HTTPS (política HSTS), Google no verá la 307 porque está almacenada en la caché del navegador. El primer acceso (sin caché) tendrá un código de respuesta del servidor que probablemente será 301 o 302. Pero tu navegador te mostrará una 307 en las solicitudes posteriores, lo que dificulta la resolución de problemas. Necesitarás usar una sesión de incógnito nueva para ver el código de estado devuelto».

Qué ve realmente Googlebot con HSTS (y cómo evolucionó la historia)

Conviene leer juntas dos declaraciones de Google separadas por cinco años. En diciembre de 2015, Zineb Ait Bahajji (entonces en Google) dijo, según Search Engine Roundtable, Zineb describió el 307 HSTS como una actualización interna y dijo que Googlebot veía una redirección 301. En octubre de 2020, el encuadre de Mueller en un vídeo de Ask Google Webmasters (a través de Search Engine Journal) fue algo diferente: Mueller indicó que Googlebot no interactúa con esas 307 HSTS porque generalmente no son redirecciones reales. En cualquier caso, el rastreador no está viendo la misma «307» que una persona ve en las herramientas de desarrollo: las herramientas y la infraestructura de rastreo cambiaron (Fetch as Google se retiró para dar paso a Inspección de URL), pero el principio subyacente se mantuvo durante al menos una década: en el caso HSTS no existe una 307 real emitida por el servidor. Trata la declaración de 2020 como la orientación actual; la de 2015 es historia útil.

La conclusión operativa importante es esta: HSTS es una comodidad del navegador, no un mecanismo para descubrir páginas mediante el rastreo. Los propietarios de sitios siguen necesitando una redirección real del lado del servidor (una 301 genuina) para http→https si quieren que esa ruta funcione para los rastreadores.

Cómo trata Bing una 307

¿Sinceramente? Hay un vacío en la documentación. No he encontrado ninguna declaración pública de Bing que se refiera a la 307 por su nombre, ni específicamente a la 307 provocada por HSTS. La orientación de Bing sobre redirecciones (la publicación de 2011 Gestión de redirecciones — 301s, 302s y canónicas y la de 2020 Migración de sitios con Bing) solo cubre la división entre redirecciones permanentes y temporales 301/302: no menciona 307, 308 ni HSTS. Así que, en vez de suponer que Bing y Google se comportan igual, hay que decirlo claramente: Bing no ha publicado nada específico sobre la 307. El fenómeno sigue siendo real y relevante para los rastreadores independientemente del motor —Screaming Frog incluye precisamente una opción «Respetar la política HSTS» porque HSTS afecta al rastreo—, pero eso es documentación de una herramienta, no una declaración de Bing.

Cuándo elegir deliberadamente una 307

Elige una 307 (en lugar de una 302) siempre que perder el método o el cuerpo original pueda romper algo:

  • Endpoints de API y destinos de webhooks que reciben POST/PUT/PATCH.
  • Flujos de envío de formularios (POST) que redirigen después del procesamiento.
  • Envíos POST de procesos de pago o inicio de sesión entre hosts.
  • Cualquier caso en el que la solicitud lleve un cuerpo que no puedas permitirte perder.

Para un traslado sencillo de una página a otra, una 302 y una 307 son indistinguibles para Google, así que cualquiera sirve desde el punto de vista del SEO. Si estás tratando con la versión permanente de esta misma lógica de conservación del método, esa es la relación entre 301 y 308: 308 es a 301 lo que 307 es a 302.

Mi preferencia declarada, tomada de la guía de redirecciones , es más concreta que el habitual «da igual»: «my preferred order would be: 307 / 302 / 303 > Meta refresh 0 / HTTP refresh 0.» (traducción) «mi orden de preferencia sería: 307 / 302 / 303 por encima de Meta refresh 0 / actualización HTTP 0». Coloco la 307 primera entre las opciones temporales: usarla de forma coherente significa que siempre estás a salvo en lo relativo a conservar el método, que es aproximadamente el argumento de «integridad» que también planteó Mueller. Y elijas la que elijas, vigila que una 307 real (o el artefacto HSTS) no se convierta en un salto dentro de una cadena de redirecciones más larga: cada salto adicional añade latencia y reduce la eficiencia.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.