b'\n_START_ARTICLE_\nHTTP ETag\n_START_PARAGRAPH_\nETag o entity tag (etiqueta de entidad en espa\xc3\xb1ol) es parte de HTTP, el protocolo para la World Wide Web. Es uno de los varios mecanismos que HTTP proporciona para la validaci\xc3\xb3n de cach\xc3\xa9 web, y que permite a un cliente realizar peticiones condicionales. Esto permite que las cach\xc3\xa9s sean m\xc3\xa1s eficientes y ahorra ancho de banda, puesto que un servidor web no necesita enviar una respuesta completa si el contenido no ha cambiado. Los ETags tambi\xc3\xa9n pueden ser usados para el control de concurrencia optimista,\xe2\x80\x8b como una manera de ayudar a prevenir que actualizaciones simult\xc3\xa1neas de un recurso se sobrescriban entre s\xc3\xad._NEWLINE_Un ETag es un identificador opaco asignado por un servidor web a una versi\xc3\xb3n espec\xc3\xadfica de un recurso que se encuentra en una URL. Si el contenido del recurso en esa URL cambia, se le asigna un nuevo y diferente ETag. Usado de esta manera los ETags son similares a las huellas digitales, y se puede comparar de forma r\xc3\xa1pida para determinar si dos versiones de un recurso son la misma. Comparar ETags s\xc3\xb3lo tiene sentido con respecto a una URL - los ETags para los recursos obtenidos a partir de diferentes URLs pueden o no ser iguales, por lo que no se puede inferir ning\xc3\xban significado de su comparaci\xc3\xb3n.\n_START_SECTION_\nRiesgos de implementaci\xc3\xb3n\n_START_PARAGRAPH_\nEl uso de ETags en la cabecera HTTP es opcional (no es obligatorio como ocurre con otros campos de la cabecera HTTP 1.1). El m\xc3\xa9todo por el cual se generan los ETags nunca se ha especificado en la especificaci\xc3\xb3n HTTP._NEWLINE_Los m\xc3\xa9todos comunes de generaci\xc3\xb3n de ETags incluyen el uso de una funci\xc3\xb3n hash resistente a colisiones del contenido del recurso, un hash del timestamp de \xc3\xbaltima modificaci\xc3\xb3n, o incluso simplemente un n\xc3\xbamero de revisi\xc3\xb3n._NEWLINE_Con el fin de evitar el uso de datos de cach\xc3\xa9 obsoletos, los m\xc3\xa9todos utilizados para generar ETags deben garantizar (tanto como sea pr\xc3\xa1ctico) que cada ETag es \xc3\xbanico. Sin embargo, una funci\xc3\xb3n de generaci\xc3\xb3n de ETags podr\xc3\xada ser juzgada como "utilizable" si se puede demostrar (matem\xc3\xa1ticamente) que la duplicaci\xc3\xb3n de ETags ser\xc3\xada "aceptablemente rara", aunque pudiese ocurrir._NEWLINE_En algunas funciones checksum, como CRC32 y CRC64, se sabe que sufren de este problema de colisi\xc3\xb3n de hash. Debido a esto no son buenas candidatas para su uso en la generaci\xc3\xb3n de ETags.\n_START_SECTION_\nValidaci\xc3\xb3n fuerte y d\xc3\xa9bil\n_START_PARAGRAPH_\nEl mecanismo de ETag soporta a la vez validaci\xc3\xb3n fuerte y d\xc3\xa9bil. Se distinguen por la presencia de un "W/" inicial en el identificador de ETag, como:_NEWLINE_"123456789"   -- Un validador fuerte de ETag_NEWLINE_W/"123456789"  -- Un validador d\xc3\xa9bil de ETag_NEWLINE_Una coincidencia de ETag fuertemente validado indica que el contenido de los dos recursos es byte por byte id\xc3\xa9ntico y que todos los dem\xc3\xa1s campos de entidad (como Content-Language) tampoco est\xc3\xa1n modificados. Los ETags fuertes permiten el almacenamiento en cach\xc3\xa9 y reensamblaje de respuestas parciales, como con las solicitudes de intervalo de bytes._NEWLINE_Una coincidencia de ETag d\xc3\xa9bilmente validada s\xc3\xb3lo indica que los dos recursos son sem\xc3\xa1nticamente equivalentes, lo que significa que a efectos pr\xc3\xa1cticos son intercambiables y que las copias en cach\xc3\xa9 pueden ser utilizadas. Sin embargo, los recursos no son necesariamente byte por byte id\xc3\xa9nticos y, por lo tanto, los ETags d\xc3\xa9biles no son adecuados para las solicitudes de intervalo de bytes. Los ETags d\xc3\xa9biles pueden ser \xc3\xbatiles para los casos en los que la generaci\xc3\xb3n de ETags fuertes no es pr\xc3\xa1ctica para un servidor web, como es el caso del contenido generado din\xc3\xa1micamente.\n_START_SECTION_\nUso t\xc3\xadpico\n_START_PARAGRAPH_\nEn un uso t\xc3\xadpico, cuando se recupera un URL, el servidor web devolver\xc3\xa1 el recurso junto con su valor ETag correspondiente, que se coloca en un campo HTTP "ETag":_NEWLINE_ETag: "686897696a7c876b7e"_NEWLINE_El cliente puede decidir entonces almacenar en cach\xc3\xa9 el recurso, junto con su ETag. M\xc3\xa1s tarde, si el cliente quiere recuperar el mismo URL de nuevo, se enviar\xc3\xa1 una copia previamente guardada del ETag junto con la solicitud en un campo "If-None-Match"._NEWLINE_If-None-Match: "686897696a7c876b7e"_NEWLINE_En esta solicitud posterior, el servidor puede ahora comparar el ETag del cliente con el ETag para la versi\xc3\xb3n actual del recurso. Si los valores ETag coinciden, lo que significa que el recurso no ha cambiado, entonces el servidor puede enviar de vuelta una respuesta muy corta con un estado HTTP 304 Not Modified. El estado 304 indica al cliente que su versi\xc3\xb3n en cach\xc3\xa9 sigue siendo buena y que deber\xc3\xada usar esa._NEWLINE_Sin embargo, si los valores ETag no coinciden, es decir, el recurso probablemente ha cambiado, entonces se devuelve una respuesta completa que incluya el contenido del recurso, como si no se estuviesen utilizando ETags. En este caso, el cliente puede optar por sustituir su versi\xc3\xb3n previamente en cach\xc3\xa9 con el recurso reci\xc3\xa9n recuperado y el nuevo ETag._NEWLINE_Los valores ETag se pueden utilizar en sistemas de monitorizaci\xc3\xb3n de p\xc3\xa1ginas web. La monitorizaci\xc3\xb3n de p\xc3\xa1ginas web eficiente se ve obstaculizada por el hecho de que la mayor\xc3\xada de sitios web no establecen las cabeceras ETag para sus p\xc3\xa1ginas web. Cuando un monitor web no tiene indicios de si el contenido web se ha cambiado todo el contenido tiene que ser recuperada, y analizado, utilizando recursos de computaci\xc3\xb3n, tanto del publicador como del suscriptor.\n_START_SECTION_\nSeguimiento utilizando ETags\n_START_PARAGRAPH_\nLos ETags se pueden utilizar para realizar un seguimiento de usuarios \xc3\xbanicos,\xe2\x80\x8b puesto que las cookies HTTP son borradas cada vez m\xc3\xa1s por los usuarios preocupados por su privacidad. En julio de 2011, Ashkan Soltani y un equipo de investigadores de UC Berkeley informaron que un n\xc3\xbamero de sitios web, incluyendo Hulu.com, estaban usando ETags con fines de seguimiento.\xe2\x80\x8b Hulu y KISSmetrics han dejado el "respawning" a fecha de 29 de julio 2011,\xe2\x80\x8b puesto que KISSmetrics y m\xc3\xa1s de 20 de sus clientes se enfrentan a una demanda colectiva por el uso de cookies de seguimiento "imborrables" que implican en parte el uso de ETags.\xe2\x80\x8b_NEWLINE_Debido a que los ETags se almacenan en cach\xc3\xa9 por el navegador, y son recuperados con las solicitudes posteriores para el mismo recurso, un servidor de seguimiento simplemente puede repetir cualquier ETag recibida desde el navegador para asegurar que un ETag asignado persiste indefinidamente (de forma similar a las cookies persistentes). Las cabeceras adicionales de almacenamiento en cach\xc3\xa9 tambi\xc3\xa9n pueden mejorar la conservaci\xc3\xb3n de los datos ETag.\xe2\x80\x8b_NEWLINE_Los ETags pueden ser desechables limpiando la cach\xc3\xa9 del navegador (las implementaciones var\xc3\xadan).'