Redirección 303 See Other

Qué es una redirección 303 See Other, el patrón Post/Redirect/Get que impulsa, por qué cambia la solicitud a GET o HEAD (a diferencia de 307), cómo se diferencia de 302 y por qué Google y Bing apenas publican orientación SEO específica para 303.

Publicado por primera vez: 2 jul 2026 · Última actualización: 8 ago 2026 · Avanzado
Idiomas

Un 303 See Other es una redirección HTTP temporal que indica al cliente que obtenga una URL diferente con una solicitud GET o HEAD, sin importar el método que usó la solicitud original. Es el mecanismo detrás del patrón Post/Redirect/Get (PRG): se envía un formulario con POST, se recibe un 303 hacia una página de resultados accesible mediante GET, de modo que actualizar no reenvía el POST original. A diferencia de 307 (que siempre preserva el método), 303 lo cambia a GET o HEAD; a diferencia de 302, su manejo del método es inequívoco. Para SEO apenas importa: es un patrón de aplicación web, no una herramienta de migración de URL. Google lo documenta solo como parte del grupo genérico de 3xx 'temporales' junto con 302 y 307, y afirma que la redirección en sí no es una señal de que el destino deba ser canónico (aunque otras señales aún pueden provocar la indexación del destino), y ni Google ni Bing publican orientación dedicada para 303. Normalmente no se verá usado para redirecciones SEO y, si se ve, se trata como un 302/307.

TL;DR — Un 303 (HTTP “303 See Other”) es una redirección temporal cuyo comportamiento definitorio es que dirige al cliente para que recupere otro recurso con GET o HEAD, independientemente de lo que usara la solicitud original. Eso es lo que impulsa el patrón Post/Redirección/Get (PRG): POST303 → página de resultado GET, por lo que una actualización vuelve a obtener la página en lugar de reenviar el formulario. Difiere de 307 (que siempre preserva el método) y de 302 (cuyo manejo del método fue históricamente ambiguo). Es realmente raro como redirección SEO de página a página: es un mecanismo de aplicación web, no una herramienta de migración de URL. Google documenta 303 solo como un miembro del grupo genérico de 3xx “temporales” con 302 y 307 — una señal de canonicalización débil — y no publica orientación específica sobre 303; Bing tampoco publica ninguna que yo haya podido encontrar. No inventes autoridad que no existe: di claramente que hay poco que decir.

Qué es realmente un 303

Un 303 es un código de estado HTTP devuelto en las cabeceras de respuesta, antes de cualquier cuerpo, con una cabecera Location que apunta a la URL que el cliente debería obtener a continuación. La semántica es estrecha y específica: la respuesta a tu solicitud está en otro lugar, y deberías recuperarla con GET o HEAD. Evidence for this claim RFC 9110 defines 303 See Other as directing the client to retrieve another resource identified by Location using GET or HEAD. Scope: HTTP semantics for 303 responses. Confidence: high · Verified: IETF: RFC 9110 §15.4.4 — 303 See Other

Ese comportamiento de recuperación con GET o HEAD es la razón completa por la que 303 existe como un código distinto, y es el eje en el que difieren las tres redirecciones más o menos temporales.

303 vs 302 vs 307: la cuestión del método

Los tres son “temporales” desde el punto de vista del SEO — Google los agrupa como señales débiles. Sin embargo, técnicamente, responden a una pregunta de forma diferente: cuando el cliente sigue la redirección, ¿qué método HTTP usa?

CódigoSignificadoMétodo en la solicitud redirigida
302 FoundTemporalHistóricamente ambiguo — muchos clientes cambiaban POST a GET, pero la especificación no lo garantizaba, por lo que el comportamiento variaba
303 See OtherSee Other (temporal)GET o HEAD — el método original se cambia deliberadamente
307 Temporary RedirectTemporalSiempre preservado — un POST sigue siendo un POST, un PUT sigue siendo un PUT

303 y 307 se introdujeron en parte para desambiguar la confusión alrededor de 302. Si quieres forzar el método a GET después del envío de un formulario, eso es un 303. Si necesitas que el método original se mantenga (por ejemplo, volver a emitir un POST a un nuevo endpoint), eso es un 307. Un 302 es el punto medio histórico laxo que ninguno de los dos define con precisión.

Una diferencia práctica más: las respuestas 303 no son almacenables en caché de forma predeterminada, mientras que una 301 sí. Esto importa si te preocupa que un navegador o un CDN almacene en caché el destino de la redirección de forma inadecuada — con un 303 no tienes esa preocupación.

El patrón Post/Redirect/Get, con precisión

PRG es el uso canónico de un 303, y es un patrón de diseño deliberado y correcto — no un estado de error:

  1. El cliente envía un formulario como POST (crear un pedido, publicar un comentario, ejecutar un pago).
  2. El servidor procesa el efecto secundario y luego devuelve 303 See Other con un encabezado Location que apunta a una URL de resultado accesible mediante GET (un recibo, una confirmación, una vista actualizada del recurso).
  3. El cliente continúa con un GET (o HEAD) a esa URL. El historial del navegador y el botón de actualización ahora apuntan a una recuperación segura e idempotente —recargar o volver atrás vuelve a obtener la página de resultado en lugar de repetir el POST.

La ventaja es que una simple actualización del navegador deja de reenviar el formulario: no más diálogo “confirm form resubmission”. Sé preciso acerca de lo que eso es y lo que no: PRG evita esa ruta de repetición específica, no todas las escrituras duplicadas. No garantiza un procesamiento exactamente una vez. Los reintentos, los tiempos de espera, los dobles clics y las solicitudes concurrentes aún pueden disparar el POST original dos veces, por lo que cualquier operación que cambie el estado — pedidos, pagos, envíos de comentarios — aún necesita sus propios controles a nivel de aplicación (claves de idempotencia, límites de transacción, detección de solicitudes duplicadas) si la duplicación es un riesgo real. En las API RESTful también verás 303 después de un PUT o DELETE para enviar al cliente a una representación del recurso afectado.

Cómo trata Google el 303 (y por qué hay tan poco que tratar)

Este es el hallazgo central y honesto para este tema: Google no tiene orientación de SEO específica para 303. Aparece en la documentación de redirecciones de Google solo como una fila en la tabla de redirecciones “temporales”, junto a 302 y 307. El propio encuadre de Google de todo ese grupo es preciso: el rastreador sigue la redirección, pero el flujo de indexación no usa la redirección en sí como una señal de que el destino debería ser canónico — aunque otras señales aún pueden llevar a Google a indexar el destino de todos modos. Eso es diferente de — y más estrecho que — la canonicalización fuerte que proporciona una 301 permanente. Evidence for this claim Google groups HTTP 303 with temporary redirects, follows it, and does not use it as a signal that the destination should become canonical. Scope: Google Search canonicalization behavior for server-side temporary redirects. Confidence: high · Verified: Google: Redirects and Google Search

El propio escrito informal de John Mueller sobre los tipos de redirección es aún más revelador. Después de recorrer en detalle 301, 302 y 307, descarta 303 en un único aparte:

  • “What about 303? 304.5? If you have strong feelings about one of the other kinds of redirects, feel free to use them.” (traducción) «¿Qué pasa con 303? ¿304.5? Si tienes opiniones fuertes sobre uno de los otros tipos de redirecciones, siéntete libre de usarlas.» La conclusión práctica que añade es la parte útil:
  • “We’ll have to figure out which URL to index the content under, so if you have strong feelings about that too, make sure to follow up with other canonicalization signals.” (traducción) «Tendremos que averiguar bajo qué URL indexar el contenido, así que si también tienes opiniones fuertes sobre eso, asegúrate de hacer seguimiento con otras señales de canonicalización.» En otras palabras — si de alguna manera usas una 303 y te importa qué URL indexa, no dependas del tipo de redirección; respáldalo con rel="canonical", enlaces internos y sitemaps.

La documentación de Google también añade una nota que vale la pena interiorizar en todos estos códigos: aunque los trata igual, te pide: “keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect.” (traducción) «ten en cuenta que son semánticamente diferentes. Usa el código de estado que sea apropiado para la redirección.» Así que la realidad de que “al SEO no le importa” no es una licencia para poner un 303 en un movimiento permanente — usa el código que realmente coincida con tu intención para que otros clientes se comporten correctamente.

Cómo trata Bing el 303

En pocas palabras: no pude encontrar ninguna orientación pública específica de Bing sobre el tratamiento del 303, más allá de referencias genéricas a códigos de estado HTTP en la ayuda de Bing Webmaster Tools. No hay ninguna declaración verificada de Fabrice Canel ni de ninguna otra persona de Microsoft que mencione específicamente el 303. Este es un punto de datos legítimo de “no tenemos documentación sobre esto”, no una laguna que disimular — y no voy a llenarla asumiendo que Bing simplemente replica el comportamiento declarado de Google. La ausencia de documentación no es evidencia de que el tratamiento sea idéntico; si necesitas una respuesta definitiva para Bing específicamente, esa es una pregunta abierta y no una cuestión resuelta.

¿Importa el 303 para el SEO? Rara vez.

Esta es mi conclusión honesta, y coincide con lo que he escrito públicamente. Un 303 no es una herramienta de migración de páginas. En 11 Types Of Redirects & Their SEO Impact lo resumo así: es una redirección temporal para un recurso similar y, si aparece en un contexto de SEO, se trata como una 302/307.

Señalaré una tensión honesta en mi propio catálogo anterior. En Códigos de estado HTTP y su impacto en el SEO describí el tratamiento de los 303 como “undefined… They may be treated as 301 or 302, depending on how they function.” (traducción) «indefinido… Pueden tratarse como 301 o 302, dependiendo de cómo funcionen.» Hoy lo plantearía con mayor precisión: la documentación de Google confía en que el 303 se encuentra en el grupo temporal/débil con 302 y 307. La razón por la que “undefined” alguna vez pareció cierto en la práctica es que los 303 son tan raros en la naturaleza que Google nunca ha tenido motivos para aclarar públicamente los casos límite, no porque haya un comportamiento oculto más fuerte. Comienza con el valor predeterminado documentado (débil/temporal, agrupado con 302/307); trata cualquier sorpresa como una consecuencia de la rareza, no una regla secreta.

¿Cuándo podría importar en absoluto? Realmente solo en sitios con flujos intensivos de formulario/pago o aplicaciones controladas por API donde los 303 aparecen en un rastreo de códigos de estado. Incluso entonces, la respuesta normalmente es “that’s working as intended, leave it alone.” (traducción) «eso está funcionando según lo previsto, déjalo como está». Si estás moviendo deliberadamente una URL, no uses un 303 — usa un 301 (permanente) o un 302 (temporal), y usa un 308/307 si necesitas específicamente preservación del método.

303 vs 201, 202 y 204: elegir el estado correcto para una operación de escritura

303 no es la única opción después de una solicitud que cambia el estado, y es fácil recurrir a este por costumbre. En una API (a diferencia de un flujo de formulario en el navegador), tres códigos 2xx suelen encajar mejor:

  • 201 Created — la solicitud creó uno o más recursos de forma síncrona y la respuesta debería identificar el principal, en Location si se proporciona; de lo contrario, la propia URI de destino. Usa esto cuando la creación terminó y quieres que el cliente tenga el nuevo recurso directamente, no una ida y vuelta GET independiente.
  • 202 Accepted — la solicitud fue aceptada, pero el procesamiento aún no terminó (trabajo en cola, trabajos asíncronos). La respuesta es deliberadamente neutra: describe el estado actual e idealmente dirige al cliente a un monitor de estado que pueda consultar.
  • 204 No Content — la acción se realizó correctamente y no hay nada más que devolver: sin cuerpo, sin necesidad de redirección. La respuesta termina en la sección de encabezados.

303 encaja en una forma distinta a los tres: es para cuando el cliente debería recuperar un recurso de resultado identificado por separado después de la escritura — con mayor frecuencia el patrón PRG en un navegador. No es un reemplazo directo de la creación síncrona (201), la aceptación asíncrona (202) o una operación nula simple y exitosa (204); cada uno de esos comunica un resultado distinto que una redirección no comunica.

Mitos comunes

  • “Una 303 significa que la página se movió o está rota.” No. Es una respuesta deliberada, que cambia el método — generalmente después de POST/PUT/DELETE — no una señal de “content relocated” (traducción) «contenido reubicado» o de error. Los sitios que la describen como “the browser can’t find the URL because the page moved” (traducción) «el navegador no puede encontrar la URL porque la página se movió» la están confundiendo con una 301/302 o con un 404.
  • “Una 303 transmite valor SEO como una 301.” No lo transmite. Es temporal/débil, en el mismo grupo que 302 y 307 según la propia documentación de Google.
  • “Los SEO deberían recurrir a 303 como una redirección general.” No está diseñada para eso. Es un patrón estrecho de formularios/API; usarla para migraciones de URL ordinarias es atípico.
  • “Google tiene reglas detalladas específicas de 303.” No las tiene. Una mención agrupada, y el encogimiento de hombros de Mueller de “feel free to use them” (traducción) «puedes usarlos libremente». Ese es todo el registro.
  • “303 y 302 son técnicamente idénticos.” Son equivalentes para SEO, pero no técnicamente iguales: una 303 cambia la solicitud posterior a GET o HEAD, mientras que la gestión del método de 302 fue históricamente inconsistente — que es exactamente la razón por la que se introdujeron 303 y 307 para disambiguarlo.

Dónde encaja esto

Un 303 es un código dentro del ámbito de las redirecciones temporales. Sus parientes más cercanos son el 302 (la redirección temporal laxa con la que suele agruparse) y el 307 (su contraparte que preserva el método: el 307 mantiene el método, el 303 cambia a GET o HEAD). Se diferencia del 301, la redirección permanente que sí consolida señales de posicionamiento y realiza el trabajo de migración de URL para el que un 303 nunca fue diseñado. Para ver la familia completa —301/308 permanentes, 302/303/307 temporales, 404/410 desaparecidos, errores 5xx—, consulta el clúster de códigos de estado HTTP al que pertenece esta página.

Validación segura de un flujo 303

Antes de confiar en un 303 en el entorno real, compruébalo sin seguirlo automáticamente a ciegas: inspecciona el propio valor de Location (¿es absoluto, relativo, resoluble?), presta atención a los bucles de redirección o a las cadenas innecesarias, confirma que la solicitud de seguimiento real usa GET o HEAD, y verifica el estado y el contenido de la respuesta final. Para un flujo de formulario o de API, revisa también los registros de tu aplicación para confirmar que la escritura original no se repitió.

Una advertencia: no generalices el comportamiento de un solo cliente como si fuera una regla universal. El comportamiento de seguimiento automático de navegadores, clientes HTTP y frameworks varía según el producto, la versión y la configuración: un informe sobre un cliente/versión específico no sirve como evidencia para todos ellos. Además, un verificador a nivel de URL puede confirmar la redirección y la estructura del destino, pero no puede validar por ti la idempotencia, el manejo de credenciales ni la seguridad entre orígenes; eso todavía requiere probar el flujo de envío real.

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.