Una URL de datos es un esquema de URI que proporciona una forma de insertar datos en un documento, y se usa comúnmente para insertar imágenes en HTML y CSS.
Introducción
Una URL de datos es un esquema de URI que proporciona una forma de insertar datos en un documento HTML.
Supongamos que desea incrustar una imagen pequeña. Puede seguir el camino habitual, cargarlo en una carpeta y usar elimg
etiqueta para que el navegador haga referencia a ella desde la red:
<img src="image.png" />
o puede codificarlo en un formato especial, llamado URL de datos, que permite incrustar la imagen directamente en el documento HTML, por lo que el navegador no tiene que realizar una solicitud por separado para obtenerla.
Las URL de datos pueden ahorrar algo de tiempo para archivos pequeños, pero para archivos más grandes hay desventajas en el mayor tamaño del archivo HTML, y son especialmente un problema si la imagen se vuelve a cargar en todas sus páginas, ya que no puede aprovechar el almacenamiento en caché del navegador. capacidades.
Además, una imagen codificada como URL de datos suele ser un poco más grande que la misma imagen en formato binario.
No son muy prácticos si sus imágenes se editan con frecuencia, ya que cada vez que se cambia la imagen, debe codificarse nuevamente.
Dicho esto, tienen su lugar en la plataforma web.
¿Cómo se ve una URL de datos?
Una URL de datos es una cadena que comienza condata:
seguido del formato de tipo MIME. Por ejemplo, una imagen PNG tiene tipo mimoimage/png
.
A esto le sigue una coma y luego los datos reales.
El texto generalmente se transfiere en texto sin formato, mientras que los datos binarios generalmente se codifican en base64.
A continuación, se muestra un ejemplo de cómo se verá dicha URL de datos:
<img src="data:image/png,%89PNG%0D%0A..." />
Yaquí hay una versión pequeña de la imagen del banner de este artículo codificada en un enlace
Así es como se ve una URL de datos codificada en base64. Note que comienza condata:image/png;base64
:
<img src="data:image/png;base64,iVBORw0KGgoAA..." />
Este sitio tiene un generador de URL de datos muy bueno:https://dopiaza.org/tools/datauri/index.phpque puede utilizar para transformar cualquier imagen que se encuentre en su escritorio en una URL de datos.
Las URL de datos se pueden usar en cualquier lugar donde se pueda usar una URL, como vio, puede usarla para enlaces, pero también es común usarlas en CSS:
.main {
background-image url('data:image/png;base64,iVBORw0KGgoAA...');
}
Soporte de navegador
Soncompatible con todos los navegadores modernos.
Seguridad
Las URL de datos pueden codificar cualquier tipo de información, no solo imágenes, por lo que vienen con su conjunto de implicaciones de seguridad.
DesdeWikipedia:
El URI de datos se puede utilizar para construir páginas de ataque que intentan obtener nombres de usuario y contraseñas de usuarios web desprevenidos. También se puede utilizar para sortear las secuencias de comandos entre sitios (XSS), incrustando la carga útil del ataque completamente dentro de la barra de direcciones y alojada a través de servicios de acortamiento de URL en lugar de necesitar un sitio web completo controlado por un tercero.
Controlareste artículo del Blog de Mozilla Firefoxpara obtener más información sobre cómo los usuarios malintencionados pueden utilizar las URL de datos para hacer cosas malas, y cómo el navegador Firefox mitiga dichos riesgos.
Las URL de datos se definen enRFC 2397.
Descarga mi gratisManual para principiantes de JavaScript
Más tutoriales de navegador:
- Algunos trucos útiles disponibles en HTML5
- Cómo hice que un sitio web basado en CMS funcionara sin conexión
- La guía completa de aplicaciones web progresivas
- La API de Fetch
- La guía Push API
- La API de mensajería de canal
- Tutorial para trabajadores de servicios
- La guía de la API de caché
- La guía de la API de notificaciones
- Sumérjase en IndexedDB
- La API de selectores: querySelector y querySelectorAll
- Cargue JavaScript de forma eficiente con diferir y asincrónico
- El modelo de objetos de documento (DOM)
- La API de almacenamiento web: almacenamiento local y almacenamiento de sesiones
- Descubra cómo funcionan las cookies HTTP
- La API de historia
- El formato de imagen WebP
- XMLHttpRequest (XHR)
- Un tutorial detallado de SVG
- ¿Qué son las URL de datos?
- Hoja de ruta para aprender la plataforma web
- CORS, intercambio de recursos de origen cruzado
- Trabajadores web
- La guía requestAnimationFrame ()
- Que es el Doctype
- Trabajar con la consola de DevTools y la API de la consola
- La API de síntesis de voz
- Cómo esperar el evento DOM Ready en JavaScript simple
- Cómo agregar una clase a un elemento DOM
- Cómo recorrer los elementos DOM de querySelectorAll
- Cómo eliminar una clase de un elemento DOM
- Cómo comprobar si un elemento DOM tiene una clase
- Cómo cambiar un valor de nodo DOM
- Cómo agregar un evento de clic a una lista de elementos DOM devueltos por querySelectorAll
- WebRTC, la API web en tiempo real
- Cómo obtener la posición de desplazamiento de un elemento en JavaScript
- Cómo reemplazar un elemento DOM
- Cómo aceptar solo imágenes en un campo de archivo de entrada
- ¿Por qué utilizar una versión de vista previa de un navegador?
- El objeto Blob
- El objeto de archivo
- El objeto FileReader
- El objeto FileList
- ArrayBuffer
- ArrayBufferView
- El objeto URL
- Matrices escritas
- El objeto DataView
- La API BroadcastChannel
- La API de Streams
- El objeto FormData
- El objeto del navegador
- Cómo utilizar la API de geolocalización
- Cómo utilizar getUserMedia ()
- Cómo utilizar la API de arrastrar y soltar
- Cómo trabajar con el desplazamiento en páginas web
- Manejo de formularios en JavaScript
- Eventos de teclado
- Eventos del mouse
- Toque eventos
- Cómo eliminar a todos los hijos de un elemento DOM
- Cómo crear un atributo HTML usando Vanilla Javascript
- ¿Cómo verificar si una casilla de verificación está marcada usando JavaScript?
- Cómo copiar al portapapeles usando JavaScript
- Cómo deshabilitar un botón usando JavaScript
- Cómo hacer que una página sea editable en el navegador
- Cómo obtener valores de cadena de consulta en JavaScript con URLSearchParams
- Cómo eliminar todo el CSS de una página a la vez
- Cómo utilizar insertAdjectedHTML
- Safari, avisa antes de salir
- Cómo agregar una imagen al DOM usando JavaScript
- Cómo restablecer un formulario
- Cómo utilizar las fuentes de Google