El código 204 No Content

Hace un tiempo estuve hablando del protocolo HTTP/1.1 y su relación con el SEO. Haciendo un poco de revisión de aquel artículo me quedé con la duda de uno de los códigos: el 204 No Content.

Al principio me había parecido verlo en algún sitio que permitía hacer alguna redirección, cosa que no tenía mucho sentido, pero “se quedó ahí”. Ahora he estado investigando un poco más del tema y he acabado entendiendo el porqué de este código.

Si revisamos lo que dice el estándar, veremos algo más de luz: 204 No Content

The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation. The response MAY include new or updated metainformation in the form of entity-headers, which if present SHOULD be associated with the requested variant.

If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent’s active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent’s active view.

The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields.

En resumen, que cuando se hace una petición y se devuelve un 204, se acaba todo, porque básicamente cuando la petición vuelve no se manda “ningún contenido”. ¿Y para qué utilizar esto? Hay un caso en el que se ve todo muy claro.

Muchas veces los contadores de visitas o similares integran en el sitio un pequeño GIF de 1×1, habitualmente, al que se le mandan algunos parámetros. Esto básicamente se usa para recoger estadísticas. La imagen no es que sea una imagen, sino que suele ser algo “programado” que acaba devolviendo una imagen muy pequeña, de pocos bytes… pero ¿qué necesidad hay de devolver información si la imagen simplemente no se muestra?

http://www.ejemplo.com/nada.gif?usuario=10001&navegador=firefox

Esto en vez de devolver el “nada.gif” ¿por qué simplemente no devuelve nada y te ahorras el tiempo que se tarda en descargar información para otras cosas?

Se podría hacer algo como:

http://www.ejemplo.com/nada.php?usuario=10001&navegador=firefox

Y que este PHP tenga algo similar a:

<?php
/*
[...]
fwrite();
[...]
*/
header("HTTP/1.0 204 No Content");
?>

De esta forma, se conseguiría el mismo efecto y se ahorrarían unas décimas de segundo en tiempo de transferencia, a parte de la transferencia en sí.

2 comentarios en “El código 204 No Content”

  1. Otro uso parecido es el que hace Google, depende del navegador pero cuando pinchas en un resultado de búsqueda, te hace pasar a traves de una pagina con 204 que modifica el contenido de HTTP referrer que llega al destino. (y de paso trackea el click)

Deja un comentario