¿Qué narices es esto?
El código 303 See Other es el "tu formulario se envió, ahora ve a ver el resultado" de HTTP. Es la estrella del patrón POST-Redirect-GET (PRG), diseñado específicamente para evitar el clásico problema del "¿Quieres reenviar este formulario?" cuando recargas una página. Como el camarero que te dice "tu pedido está listo, ve a recogerlo a la barra".
Este código fue introducido en HTTP/1.1 para solucionar problemas del 302. Cuando envías un formulario con POST, el servidor procesa los datos y te responde con 303 + Location header apuntando a una página de confirmación. El navegador automáticamente hace un GET a esa nueva URL, y si recargas la página, solo repites el GET (seguro) en lugar del POST (peligroso).
El 303 aparece típicamente en:
- Envío de formularios → página de confirmación
- Operaciones de compra → página "pedido recibido"
- APIs RESTful después de POST/PUT/DELETE
- Registro de usuarios → página de bienvenida
- Cualquier operación que modifica datos
🎯 Dato curioso
El 303 existe porque el 302 era ambiguo: algunos navegadores cambiaban POST a GET, otros no. El 303 clarifica: "usa GET obligatoriamente". Es HTTP siendo específico después de años de confusión.
La magia del 303 es que siempre fuerza el método GET en la redirección, sin importar qué método usaste originalmente. Esto hace que la página resultante sea "segura" para recargar, marcar como favorito o compartir. Es la diferencia entre hacer una acción y ver el resultado de esa acción.