204 No Content: éxito con una respuesta vacía

204 No Content significa que la solicitud tuvo éxito y el servidor no envía cuerpo a propósito, algo habitual en actualizaciones de API y preflights CORS.

Comprueba el código de estado de una URL

204 No Content significa que la solicitud tuvo éxito y que, a propósito, no hay nada que devolver. Es lo normal en actualizaciones y borrados de una API, en beacons de analítica y en las comprobaciones previas (preflight) del navegador, y un problema cuando se devuelve en una página que debería tener contenido.

Definición

La RFC 9110, sección 15.3.5 dice que el servidor ha cumplido la solicitud y que no hay contenido adicional que enviar. Un 204 no puede llevar cuerpo: la respuesta termina con las cabeceras, y los metadatos que contienen describen el recurso de destino después de la acción. Para un navegador, un 204 significa “quédate donde estás”, así que un enlace o formulario que devuelve 204 no cambia la página. Un 204 es almacenable en caché por defecto.

Dónde es correcto un 204

  • Actualizaciones PUT o PATCH y solicitudes DELETE en API REST.
  • Respuestas de preflight CORS a solicitudes OPTIONS.
  • Endpoints de analítica y seguimiento que solo necesitan recibir datos.
  • Comprobaciones de conectividad: Android, por ejemplo, solicita una URL generate_204 para detectar portales cautivos.

Impacto en el SEO

En las páginas HTML, un 204 es un error. La documentación de Google indica que Googlebot avisa al proceso de indexación de que no ha recibido contenido, y Search Console puede notificar la URL como soft 404 en el informe Indexación de páginas. Para Google, la página está vacía, así que no posicionará. Estas son algunas formas en que ocurre:

  • Un controlador no devuelve nada. ASP.NET Core, por ejemplo, convierte en 204 un resultado null de una acción de API.
  • Una ruta o un middleware termina la respuesta antes de que se renderice la plantilla.
  • Una regla de CDN o de edge pensada para la ruta de un beacon coincide también con páginas reales.

Cómo solucionarlo y comprobarlo

Haz que las rutas de página rendericen siempre una plantilla con 200 OK, o devuelvan 404 cuando el elemento no existe, nunca un éxito vacío. Analiza las URL importantes con el comprobador de códigos de estado HTTP y usa el comprobador de cabeceras HTTP para ver qué capa respondió. Un 204 correcto, aquí en un preflight CORS:

OPTIONS /api/v1/cart HTTP/1.1
Host: api.example.com
Origin: https://www.example.com
Access-Control-Request-Method: PATCH

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://www.example.com
Access-Control-Allow-Methods: GET, POST, PATCH
Access-Control-Max-Age: 600

Preguntas frecuentes

¿204 No Content es un error?

No, es un código de éxito. Solo significa que no hay nada que devolver, algo normal en muchas actualizaciones de API, borrados y solicitudes preflight.

¿Por qué Search Console muestra un soft 404 en una página que devuelve 204?

Google interpreta un 204 como “no se ha recibido contenido”. Una página sin contenido no se puede indexar, así que Search Console puede marcarla como soft 404. Haz que la página devuelva 200 con su HTML.

¿Una solicitud DELETE debe devolver 204 o 200?

Cualquiera de los dos vale. Usa 204 cuando no hay nada útil que devolver, y 200 cuando envías una confirmación o el elemento eliminado.