A tipo de medio (también conocido como Extensiones multipropósito de correo de Internet o tipo MIME) es un estándar que indica la naturaleza y el formato de un documento, archivo o variedad de bytes. Está definido y estandarizado en IETF RFC 6838.

los Autoridad de números asignados de Internet (IANA) es responsable de todos los tipos MIME oficiales, y puede encontrar la lista más actualizada y completa en su Tipos de medios página.

Importante: Los navegadores utilizan el tipo MIME, no la extensión del archivo, para determinar cómo procesar una URL, por lo que es importante que los servidores web envíen el tipo MIME correcto en la respuesta Content-Type encabezamiento. Si esto no está configurado correctamente, es probable que los navegadores malinterpreten el contenido de los archivos y los sitios no funcionen correctamente, y los archivos descargados pueden ser mal manejados.

Estructura de un tipo MIME

El tipo MIME más simple consiste en un escribe y un subtipo; estas son cada una de las cadenas que, cuando se concatenan con una barra oblicua (/) entre ellos, comprenden un tipo MIME. No se permiten espacios en blanco en un tipo MIME:

type/subtype

los escribe representa la categoría general en la que cae el tipo de datos, como video o text. los subtipo identifica el tipo exacto de datos del tipo especificado que representa el tipo MIME. Por ejemplo, para el tipo MIME text, el subtipo podría ser plain (Texto sin formato), html (HTML código fuente), o calendar (para iCalendar /.ics) archivos.

Cada tipo tiene su propio conjunto de subtipos posibles, y un tipo MIME siempre tiene un tipo y un subtipo, nunca solo uno u otro.

Un opcional parámetro se puede agregar para proporcionar detalles adicionales:

type/subtype;parameter=value

Por ejemplo, para cualquier tipo MIME cuyo tipo principal sea text, el opcional charset El parámetro se puede utilizar para especificar el juego de caracteres utilizado para los caracteres en los datos. Si no charset se especifica, el valor predeterminado es ASCII (US-ASCII) a menos que sea anulado por el agente de usuario ajustes. Para especificar un archivo de texto UTF-8, el tipo MIME text/plain;charset=UTF-8 se utiliza.

Los tipos MIME no distinguen entre mayúsculas y minúsculas, pero tradicionalmente se escriben en minúsculas, con la excepción de los valores de los parámetros, cuyo caso puede tener o no un significado específico.

Tipos

Hay dos clases de tipos: discreto y multiparte. Los tipos discretos son tipos que representan un solo archivo o medio, como un solo archivo de texto o música, o un solo video. Un tipo de varias partes es aquel que representa un documento que consta de varios componentes, cada uno de los cuales puede tener su propio tipo MIME individual; o, un tipo de varias partes puede encapsular varios archivos que se envían juntos en una transacción. Por ejemplo, los tipos MIME de varias partes se utilizan al adjuntar varios archivos a un correo electrónico.

Tipos discretos

Los tipos discretos actualmente registrados en la IANA son:

applicationLista en IANA
Cualquier tipo de datos binarios que no pertenezcan explícitamente a uno de los otros tipos; ya sea datos que se ejecutarán o interpretarán de alguna manera o datos binarios que requieran una aplicación o categoría de aplicación específica para su uso. Los datos binarios genéricos (o datos binarios cuyo tipo verdadero se desconoce) son application/octet-stream. Otros ejemplos comunes incluyen application/pdf, application/pkcs8, y application/zip.
audioLista en IANA
Datos de audio o música. Ejemplos incluyen audio/mpeg, audio/vorbis.
example
Reservado para usar como marcador de posición en ejemplos que muestran cómo usar tipos MIME. Estos nunca deben usarse fuera de los listados de código de muestra y la documentación. example también se puede utilizar como subtipo; por ejemplo, en un ejemplo relacionado con el trabajo con audio en la web, el tipo MIME audio/example se puede usar para indicar que el tipo es un marcador de posición y debe reemplazarse por uno apropiado cuando se usa el código en el mundo real.
fontLista en IANA
Datos de fuente / tipo de letra. Los ejemplos comunes incluyen font/woff, font/ttf, y font/otf.
imageLista en IANA
Datos de imagen o gráficos que incluyen imágenes fijas vectoriales y de mapa de bits, así como versiones animadas de formatos de imágenes fijas, como imágenes animadas. GIF o APNG. Los ejemplos comunes son image/jpeg, image/png, y image/svg+xml.
modelLista en IANA
Datos de modelo para un objeto o una escena 3D. Ejemplos incluyen model/3mf y model/vml.
textLista en IANA
Datos de solo texto, incluido cualquier contenido legible por humanos, código fuente o datos textuales, como datos con formato de valores separados por comas (CSV). Ejemplos incluyen text/plain, text/csv, y text/html.
videoLista en IANA
Datos o archivos de video, como películas MP4 (video/mp4).

Para documentos de texto sin un subtipo específico, text/plain debería ser usado. Del mismo modo, para documentos binarios sin un subtipo específico o conocido, application/octet-stream debería ser usado.

Tipos de varias partes

Multiparte los tipos indican una categoría de documento dividida en pedazos, a menudo con diferentes tipos MIME; también se pueden utilizar, especialmente en escenarios de correo electrónico, para representar varios archivos separados que forman parte de la misma transacción. Representan un documento compuesto.

Con la excepción de multipart/form-data, utilizado en el POST método de Formularios HTML, y multipart/byteranges, usado con 206Partial Content Para enviar parte de un documento, HTTP no maneja documentos de varias partes de una manera especial: el mensaje se transmite al navegador (que probablemente mostrará una ventana “Guardar como” si no sabe cómo mostrar el documento).

Hay dos tipos de varias partes:

messageLista en IANA
Un mensaje que encapsula otros mensajes. Esto se puede utilizar, por ejemplo, para representar un correo electrónico que incluye un mensaje reenviado como parte de sus datos, o para permitir el envío de mensajes muy grandes en fragmentos como si fueran varios mensajes. Ejemplos incluyen message/rfc822 (para citas de mensajes reenviados o respondidos) y message/partial para permitir dividir un mensaje grande en mensajes más pequeños para que el destinatario vuelva a ensamblarlos automáticamente.
multipartLista en IANA
Datos que se componen de varios componentes que pueden tener individualmente diferentes tipos de MIME. Ejemplos incluyen multipart/form-data (para datos producidos usando el FormData API) y multipart/byteranges (definido en RFC 7233: 5.4.1 y usado con HTTP‘s 206 La respuesta “Contenido parcial” se devuelve cuando los datos recuperados son solo una parte del contenido, como los que se entregan mediante el Range encabezamiento).

Tipos de MIME importantes para desarrolladores web

aplicación / secuencia de octetos

Este es el valor predeterminado para archivos binarios. Como significa binario desconocido , los navegadores generalmente no lo ejecutan, o incluso preguntan si debe ejecutarse. Lo tratan como si el Content-Disposition El encabezado se configuró en attachmenty proponer un cuadro de diálogo “Guardar como”.

Texto sin formato

Este es el valor predeterminado para archivos de texto. Incluso si realmente significa “archivo de texto desconocido”, los navegadores asumen que pueden mostrarlo.

Tenga en cuenta que text/plain no significa “ningún tipo de datos textuales”. Si esperan un tipo específico de datos textuales, es probable que no lo consideren una coincidencia. Específicamente si descargan un text/plain archivo de un elemento que declara un archivo CSS, no lo reconocerán como un archivo CSS válido si se presenta con text/plain. El tipo de mimo CSS text/css debe ser usado.

texto / css

Archivos CSS utilizados para diseñar una página web debe ser enviado con text/css. Si un servidor no reconoce el .css sufijo para archivos CSS, puede enviarlos con text/plain o application/octet-stream Tipos MIME. Si es así, no serán reconocidos como CSS por la mayoría de los navegadores y serán ignorados.

texto / html

Todo el contenido HTML debe publicarse con este tipo. Tipos MIME alternativos para XHTML (como application/xhtml+xml) son en su mayoría inútiles hoy en día.

Nota: Usar application/xml o application/xhtml+xml si desea las estrictas reglas de análisis de XML, secciones o elementos que no son de espacios de nombres HTML / SVG / MathML.

texto / javascript

Según la especificación HTML, los archivos JavaScript siempre deben servirse utilizando el tipo MIME. text/javascript. Ningún otro valor se considera válido y el uso de cualquiera de ellos puede provocar que los scripts no se carguen ni se ejecuten.

Por razones históricas, la Estándar de olfateo MIME (la definición de cómo los navegadores deben interpretar los tipos de medios y averiguar qué hacer con el contenido que no tiene uno válido) permite que JavaScript se sirva utilizando cualquier tipo MIME que esencialmente coincida con cualquiera de los siguientes:

  • application/javascript
  • application/ecmascript
  • application/x-ecmascript
  • application/x-javascript
  • text/javascript
  • text/ecmascript
  • text/javascript1.0
  • text/javascript1.1
  • text/javascript1.2
  • text/javascript1.3
  • text/javascript1.4
  • text/javascript1.5
  • text/jscript
  • text/livescript
  • text/x-ecmascript
  • text/x-javascript

Nota: Aunque cualquiera dado agente de usuario puede admitir cualquiera o todos estos, solo debe usar text/javascript. Es el único tipo MIME garantizado para funcionar ahora y en el futuro.

Algunos contenidos que encuentres pueden tener un charset parámetro al final de la text/javascript tipo de medio, para especificar el juego de caracteres utilizado para representar el contenido del código. Esto no es válido y, en la mayoría de los casos, provocará que no se cargue un script.

Tipos de imágenes

Archivos cuyo tipo MIME es image contener datos de imagen. El subtipo especifica qué formato de archivo de imagen específico representan los datos. Solo unos pocos tipos de imágenes se utilizan con suficiente frecuencia como para que se consideren seguros para su uso en páginas web:

Abreviatura Formato de archivo Tipo de Mimica Extensiones de archivo) Compatibilidad del navegador
APNG Gráficos de red portátiles animados image/apng .apng Chrome, Edge, Firefox, Opera, Safari
BMP Archivo de mapa de bits image/bmp .bmp Chrome, Edge, Firefox, Internet Explorer, Opera, Safari
GIF formato de gráficos intercambeable image/gif .gif Chrome, Edge, Firefox, Internet Explorer, Opera, Safari
ICO Icono de Microsoft image/x-icon .ico, .cur Chrome, Edge, Firefox, Internet Explorer, Opera, Safari
JPEG Imagen del Grupo Mixto de Expertos en Fotografía image/jpeg .jpg, .jpeg, .jfif, .pjpeg, .pjp Chrome, Edge, Firefox, Internet Explorer, Opera, Safari
PNG Gráficos de red portátiles image/png .png Chrome, Edge, Firefox, Internet Explorer, Opera, Safari
SVG gráficas vectoriales escalables image/svg+xml .svg Chrome, Edge, Firefox, Internet Explorer, Opera, Safari
PELEA Formato de archivo de imagen etiquetado image/tiff .tif, .tiff Ninguno incorporado; complementos necesarios
WebP Formato de imagen web image/webp .webp Chrome, Edge, Firefox, Opera

La abreviatura de cada formato enlaza con una descripción más larga del formato, sus capacidades e información detallada de compatibilidad del navegador; incluyendo qué versiones introdujeron soporte y características especiales específicas que pueden haber sido introducidas más tarde.

Tipos de audio y video

Como es el caso de las imágenes, HTML no exige que los navegadores web admitan ningún tipo de archivo y códec específico para el y elementos, por lo que es importante tener en cuenta su público objetivo y la variedad de navegadores (y versiones de esos navegadores) que pueden utilizar al elegir el tipo de archivo y los códecs que se utilizarán para los medios.

Nuestro guía de formatos de contenedores de medios proporciona una lista de los tipos de archivos que comúnmente son compatibles con los navegadores web, incluida información sobre cuáles pueden ser sus casos de uso especiales, cualquier inconveniente que tengan e información de compatibilidad, junto con otros detalles.

los códec de audio y códec de vídeo Las guías enumeran los diversos códecs que los navegadores web suelen admitir, proporcionando detalles de compatibilidad junto con información técnica, como cuántos canales de audio admiten, qué tipo de compresión se utiliza, a qué velocidades de bits, etc., son útiles. los códecs utilizados por WebRTC La guía amplía esto al cubrir específicamente los códecs compatibles con los principales navegadores web, para que pueda elegir los códecs que mejor cubran la gama de navegadores que desea admitir.

En cuanto a los tipos MIME de archivos de audio o video, generalmente especifican el formato del contenedor (tipo de archivo). El opcional parámetro de códecs se puede agregar al tipo MIME para especificar aún más qué códecs usar y qué opciones se usaron para codificar los medios, como el perfil del códec, el nivel u otra información similar.

Los tipos MIME más utilizados para contenido web se enumeran a continuación. Sin embargo, esta no es una lista completa de todos los tipos que pueden estar disponibles. Ver el formatos de contenedor de medios guía para eso.

Tipo de Mimica Tipo de audio o video
audio/wave
audio/wav
audio/x-wav
audio/x-pn-wav
Un archivo de audio en formato contenedor WAVE. El códec de audio PCM (códec WAVE “1”) a menudo es compatible, pero otros códecs tienen soporte limitado (si lo hubiera).
audio/webm Un archivo de audio en formato contenedor WebM. Vorbis y Opus son los códecs admitidos oficialmente por la especificación WebM.
video/webm Un archivo de video, posiblemente con audio, en formato contenedor WebM. VP8 y VP9 son los códecs de video más comunes; Vorbis y Opus son los códecs de audio más comunes.
audio/ogg Un archivo de audio en formato contenedor Ogg. Vorbis es el códec de audio más común utilizado en dicho contenedor; sin embargo, Opus ahora también es compatible con Ogg.
video/ogg Un archivo de video, posiblemente con audio, en formato contenedor Ogg. Theora es el códec de vídeo habitual que se utiliza en él; Vorbis es el códec de audio habitual, aunque Opus se está volviendo más común.
application/ogg Un archivo de audio o video que usa el formato contenedor Ogg. Theora es el códec de vídeo habitual que se utiliza en él; Vorbis es el códec de audio habitual.

multiparte / form-data

los multipart/form-data El tipo se puede utilizar al enviar los valores de un Formulario HTML del navegador al servidor.

Como formato de documento de varias partes, consta de diferentes partes, delimitadas por un límite (una cadena que comienza con un guión doble --). Cada parte es su propia entidad con sus propios encabezados HTTP, Content-Disposition, y Content-Type para campos de carga de archivos.

Content-Type: multipart/form-data; boundary=aBoundaryString
(other headers associated with the multipart document as a whole)

--aBoundaryString
Content-Disposition: form-data; name="myFile"; filename="img.jpg"
Content-Type: image/jpeg

(data)
--aBoundaryString
Content-Disposition: form-data; name="myField"

(data)
--aBoundaryString
(more subparts)
--aBoundaryString--

El seguimiento

:

<formaction="http://localhost:8000/"method="post"enctype="multipart/form-data"><label>Name: <inputname="myTextField"value="Test">label><label><inputtype="checkbox"name="myCheckBox"> Checklabel><label>Upload file: <inputtype="file"name="myFile"value="test.txt">label><button>Send the filebutton>form>

enviará este mensaje:

POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465

-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField"

Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox"

on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain

Simple file.
-----------------------------8721656041911415653955004498--

multiparte / byteranges

los multipart/byteranges El tipo MIME se utiliza para enviar respuestas parciales al navegador.

Cuando el 206 Partial Content Se envía el código de estado, este tipo MIME indica que el documento está compuesto por varias partes, una para cada uno de los rangos solicitados. Al igual que otros tipos de varias partes, el Content-Type usa un boundary para separar las piezas. Cada pieza tiene un Content-Type encabezado con su tipo real y un Content-Range del rango que representa.

HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Type: multipart/byteranges; boundary=3d6b6a416f9b5
Content-Length: 385

--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 100-200/1270

eta http-equiv="Content-type" content="text/html; charset=utf-8" />
    

Importancia de configurar el tipo MIME correcto

La mayoría de los servidores web envían recursos no reconocidos como application/octet-stream Tipo de Mimica. Por razones de seguridad, la mayoría de los navegadores no permiten configurar una acción predeterminada personalizada para dichos recursos, lo que obliga al usuario a guardarlos en el disco para usarlos.

Algunas configuraciones de servidor incorrectas comunes:

  • Archivos comprimidos con RAR. En este caso, lo ideal sería el verdadero tipo de archivos originales; esto a menudo es imposible ya que los archivos .RAR pueden contener varios recursos de diferentes tipos. En este caso, configure el servidor para enviar application/x-rar-compressed.

  • Audio y video. Solo los recursos con el tipo MIME correcto se reproducirán en o elementos. Asegúrese de especificar el correcto tipo de medio para audio y video.

  • Tipos de archivos patentados. Evitar el uso de application/octet-stream ya que la mayoría de los navegadores no permiten definir un comportamiento predeterminado (como "Abrir en Word") para este tipo MIME genérico. Un tipo específico como application/vnd.mspowerpoint permite a los usuarios abrir dichos archivos automáticamente en el software de presentación de su elección.

MIME olfateando

En ausencia de un tipo MIME, o en ciertos casos donde los navegadores creen que son incorrectos, los navegadores pueden funcionar MIME olfateando - adivinar el tipo MIME correcto mirando los bytes del recurso.

Cada navegador realiza el rastreo MIME de forma diferente y en diferentes circunstancias. (Por ejemplo, Safari buscará la extensión del archivo en la URL si el tipo MIME enviado no es adecuado). Existen problemas de seguridad, ya que algunos tipos MIME representan contenido ejecutable. Los servidores pueden evitar el rastreo de MIME enviando el X-Content-Type-Options encabezamiento.

Otros métodos de transporte del tipo de documento

Los tipos MIME no son la única forma de transmitir información sobre el tipo de documento:

  • A veces se utilizan sufijos de nombre de archivo, especialmente en Microsoft Windows. No todos los sistemas operativos consideran que estos sufijos sean significativos (como Linux y MacOS) y no hay garantía de que sean correctos.
  • Números mágicos. La sintaxis de los diferentes formatos permite la inferencia de tipos de archivos al observar su estructura de bytes. Por ejemplo, los archivos GIF comienzan con el 47 49 46 38 39 valor hexadecimal (GIF89) y archivos PNG con 89 50 4E 47 (.PNG). No todos los tipos de archivos tienen números mágicos, por lo que tampoco es 100% confiable.

Ver también

© 2005–2020 Mozilla y colaboradores individuales.
Con licencia de Creative Commons Attribution-ShareAlike License v2.5 o posterior.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_Types