Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnología web para desarrolladores
  2. HTTP
  3. Guides
  4. Tipos MIME

Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.

View in EnglishAlways switch to English

Tipos MIME

Eltipo Extensiones multipropósito de Correo de Internet (MIME) es una forma estandarizada de indicar la naturaleza y el formato de un documento, archivo o conjunto de datos. Está definido y estandarizado enIETF RFC 6838. LaAutoridad de Números Asignados de Internet (IANA) es el organismo oficial responsable de realizar un seguimiento de todos los tipos MIME oficiales, y puede encontrar la lista más actualizada y completa en la página detipos de medios (Media Types).

Los navegadores a menudo usan el tipo MIME (y no la extensión de archivo) para determinar cómo procesará un documento; por lo tanto, es importante que los servidores estén configurados correctamente para adjuntar el tipo MIME correcto al encabezado del objeto de respuesta.

Sintaxis

Estructura general

tipo/subtipo

La estructura de un tipo MIME es muy simple; consiste en un tipo y un subtipo, dos cadenas, separadas por un'/'. No se permite espacio. Eltipo representa la categoría y puede ser de tipodiscreto omultiparte. Elsubtipo es específico para cada tipo.

Un tipo MIME no distingue entre mayúsculas y minúsculas, pero tradicionalmente se escribe todo en minúsculas.

Tipos discretos

text/plaintext/htmlimage/jpegimage/pngaudio/mpegaudio/oggaudio/*video/mp4application/octet-stream…

Los tiposdiscretos indican la categoría del documento, puede ser uno de los siguientes:

TipoDescripciónEjemplo de subtipos típicos
textRepresenta cualquier documento que contenga texto y es teóricamente legible por humanostext/plain,text/html,text/css, text/javascript
imageRepresenta cualquier tipo de imagen. Los videos no están incluidos, aunque las imágenes animadas (como el gif animado) se describen con un tipo de imagen.image/gif,image/png,image/jpeg,image/bmp,image/webp
audioRepresenta cualquier tipo de archivos de audioaudio/midi,audio/mpeg, audio/webm, audio/ogg, audio/wav
videoRepresenta cualquier tipo de archivos de videovideo/webm,video/ogg
applicationRepresenta cualquier tipo de datos binarios.application/octet-stream,application/pkcs12,application/vnd.mspowerpoint,application/xhtml+xml,application/xml,application/pdf

Para documentos de texto sin subtipo específico, se debe usartext/plain. De forma similar, para los documentos binarios sin subtipo específico o conocido, se debe usarapplication/octet-stream.

Tipos multiparte

multipart/form-datamultipart/byteranges

Los tipos departes múltiples indican una categoría de documento que está rota en distintas partes, a menudo con diferentes tipos de MIME. Es una forma de representar un documento compuesto. Con la excepción demultipart/form-data, que se utilizan en relación conformularios HTML y el métodoPOST, ymultipart/byteranges, que se utilizan junto con el mensaje de estado deContenido Parcial206 para enviar solo un subconjunto de un documento completo, HTTP no maneja documentos multiparte de una manera específica: el mensaje simplemente se transmite al navegador (que probablemente propondrá una ventana Guardar como, sin saber cómo mostrar el documento en línea.)

Tipos MIME importantes para desarrolladores Web

application/octet-stream

Este es el valor predeterminado para un archivo binario. Como realmente significa unarchivo binario desconocido, los navegadores generalmente no lo ejecutan automáticamente, o incluso preguntan si debería ejecutarse. Lo tratan como si el encabezadoContent-Disposition se configurara con el valorattachment y proponen un archivo 'Guardar como'.

text/plain

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

Nota:Tenga en cuenta quetext/plain no significacualquier tipo de datos textuales. Si esperan un tipo específico de datos textuales, probablemente no lo considerarán una coincidencia. Específicamente, si descargan un archivo de texto sin formatotext/plain de un elemento<link> que declara archivos CSS, no lo reconocerán como un archivo CSS válido si se presenta context/plain. Se debe usar el tipo MIME CSStext/css.

text/css

Todos los archivos CSS que deban interpretarse como tales en una página webdeben ser de los archivos detext/css. A menudo, los servidores no reconocen los archivos con el sufijo.css como archivos CSS y los envían con tipo MIMEtext/plain oapplication/octet-stream: en estos casos, la mayoría de los navegadores no los reconocerán como archivos CSS y serán ignorado silenciosamente. Se debe prestar especial atención en servir los archivos CSS con el tipo correcto.

text/html

Todo el contenido HTML debe ser servido con este tipo. Los tipos MIME alternativos para XHTML, comoapplication/xml+html, son en su mayoría inútiles hoy en día (HTML5 unificó estos formatos).

Tipos de imágenes

Solo un puñado de tipos de imágenes son ampliamente reconocidos y se consideran seguros para la Web, listos para usar en una página Web:

Tipo MIMETipo de imagen
image/gifImágenes GIF (compresión sin pérdida, reemplazada por PNG)
image/jpegImágenes JPEG
image/pngImágenes PNG
image/svg+xmlImágenes SVG (imágenes vectoriales)

Existe una discusión para agregar WebP (image/webp) a esta lista, pero como cada tipo de imagen nuevo aumentará el tamaño de una base de código, esto puede presentar nuevos problemas de seguridad, por lo que los proveedores de navegadores son cautelosos al aceptarlo.

Se pueden encontrar otros tipos de imágenes en documentos Web. Por ejemplo, muchos navegadores admiten tipos de imágenes de iconos para favicones o similares. En particular, las imágenes ICO son compatibles en este contexto con el tipo MIMEimage/x-icon.

Tipos de audio y video

Al igual que las imágenes, HTML no define un conjunto de tipos soportados para usar con los elementos<audio> y<video>, por lo que solo un grupo relativamente pequeño de ellos puede ser utilizado en la web. Losformatos de medios compatibles con los elementos de audio y video HTML explican tanto los códecs como los formatos de contenedor que se pueden usar.

El tipo MIME de dichos archivos representa principalmente los formatos de contenedor y los más comunes en un contexto web son:

Tipo MIMETipo de audio o video
audio/waveaudio/wavaudio/x-wavaudio/x-pn-wavUn archivo de audio en formato de contenedor WAVE. El códec de audio PCM (códec WAVE "1") a menudo es compatible, pero otros códecs tienen soporte más limitado (si lo hay).
audio/webmUn archivo de audio en formato de contenedor WebM. Vorbis y Opus son los códecs de audio más comunes.
video/webmUn archivo de video, posiblemente con audio, en el formato de contenedor de WebM. VP8 y VP9 son los códecs de video más comunes utilizados en él; Vorbis y Opus los códecs de audio más comunes.
audio/oggUn archivo de audio en el formato de contenedor OGG. Vorbis es el códec de audio más común utilizado en dicho contenedor.
video/oggUn archivo de video, posiblemente con audio, en el formato de contenedor OGG. Theora es el códec de video habitual utilizado en él; Vorbis es el códec de audio habitual.
application/oggUn archivo de audio o video usando el formato de contenedor OGG. Theora es el códec de video habitual utilizado en él; Vorbis es el códec de audio más común.

multipart/form-data

El tipo de datosmultipart/form-data se puede usar al enviar el contenido de unformulario HTML completo desde el navegador al servidor. Como formato de documento multiparte, consta de diferentes partes, delimitadas por un límite (una cadena que comienza con un doble guión'--'). Cada parte es una entidad en sí misma, con sus propios encabezados HTTP,Content-Disposition yContent-Type para los campos de carga de archivos, y los más comunes (Content-Length es ignorado ya que la línea límite se usa como delimitador).

Content-Type: multipart/form-data; boundary=unaCadenaDelimitadora(otros encabezados asociados con el documento multiparte como un todo)--unaCadenaDelimitadoraContent-Disposition: form-data; name="miArchivo"; filename="img.jpg"Content-Type: image/jpeg(data)--unaCadenaDelimitadoraContent-Disposition: form-data; name="miCampo"(data)--unaCadenaDelimitadora(más subpartes)--unaCadenaDelimitadora--

El siguiente formulario:

html
<form action="http://localhost:8000/" method="post" enctype="multipart/form-data">  <input type="text" name="miCampoDeTexto">  <input type="checkbox" name="miCheckBox">Checado</input>  <input type="file" name="miArchivo">  <button>Enviar el archivo</button></form>

enviará este mensaje:

POST / HTTP/1.1Host: localhost:8000User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: keep-aliveUpgrade-Insecure-Requests: 1Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498Content-Length: 465-----------------------------8721656041911415653955004498Content-Disposition: form-data; name="miCampoDeTexto"Test-----------------------------8721656041911415653955004498Content-Disposition: form-data; name="miCheckBox"on-----------------------------8721656041911415653955004498Content-Disposition: form-data; name="miArchivo"; filename="prueba.txt"Content-Type: text/plainSimple file.-----------------------------8721656041911415653955004498--

multipart/byteranges

El tipo MIMEmultipart/byteranges se usa en el contexto del envío de respuestas parciales al navegador. Cuando se envía el código de estado deContenido Parcial206, este tipo MIME se usa para indicar que el documento está compuesto de varias partes, una para cada rango solicitado. Al igual que otros tipos de varias partes,Content-Type usa la directivaboundary para definir la cadena delimitadora. Cada una de las diferentes partes tiene un encabezadoContent-Type con el tipo real del documento y unContent-Range con el rango que representan.

HTTP/1.1 206 Partial ContentAccept-Ranges: bytesContent-Type: multipart/byteranges; boundary=3d6b6a416f9b5Content-Length: 385--3d6b6a416f9b5Content-Type: text/htmlContent-Range: bytes 100-200/1270eta http-equiv="Content-type" content="text/html; charset=utf-8" />    <meta name="vieport" content--3d6b6a416f9b5Content-Type: text/htmlContent-Range: bytes 300-400/1270-color: #f0f0f2;        margin: 0;        padding: 0;        font-family: "Open Sans", "Helvetica--3d6b6a416f9b5--

Importancia de establecer el tipo MIME correcto

La mayoría de los servidores web envían recursos de tipo desconocido utilizando el tipo MIME predeterminadoapplication/octet-stream. Por razones de seguridad, la mayoría de los navegadores no permiten establecer una acción predeterminada personalizada para dichos recursos, lo que obliga al usuario a almacenarlo en el disco para usarlo. Algunas configuraciones de servidor incorrectas que se ven con frecuencia ocurren con los siguientes tipos de archivos:

  • Archivos con codificación RAR. En este caso, lo ideal sería establecer el tipo verdadero de los archivos codificados; esto a menudo no es posible (ya que puede no ser conocido por el servidor y estos archivos pueden contener varios recursos de diferentes tipos). En este caso, al configurar el servidor para que envíe el tipo MIMEapplication/x-rar-compressed, los usuarios no habrán definido una acción predeterminada útil para ellos.
  • Archivos de audio y video. Solo los recursos con el tipo MIME correcto serán reconocidos y reproducidos en elementos<video> o<audio>. Asegúrese deusar el tipo correcto para audio y video.
  • Tipos de archivos propietarios. Preste especial atención al servir un tipo de archivo propietario. Evite el uso deapplication/octet-stream ya que no será posible un manejo especial: la mayoría de los navegadores no permiten definir un comportamiento predeterminado (como "Abrir en Word") para este tipo genérico MIME.

Olfateo MIME (sniffing)

En ausencia de un tipo MIME, o en algunos otros casos en los que un cliente cree que están configurados incorrectamente, los navegadores pueden realizar el rastreo MIME, que es adivinar el tipo MIME correcto mirando el recurso. Cada navegador realiza esto de manera diferente y bajo diferentes circunstancias. Hay algunas preocupaciones de seguridad con esta práctica, ya que algunos tipos MIME representan el contenido ejecutable y otros no. Los servidores pueden bloquear el rastreo de MIME enviando elX-Content-Type-Options a lo largo deContent-Type.

Otros métodos de transporte de tipo de documento

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

  • Los sufijos de nombre a veces se usan, especialmente en los sistemas de Microsoft Windows. No todos los sistemas operativos consideran significativos estos sufijos (especialmente Linux y Mac OS), y al igual que un tipo MIME externo, no hay garantía de que sean correctos.
  • Números mágicos. La sintaxis de los diferentes tipos de archivos permite la inferencia del tipo de archivo al observar la estructura. P.ej. cada archivo GIF comienza con el valor hexadecimal 47 49 46 38 39 [GIF89] o archivos PNG con 89 50 4E 47 [.PNG]. No todos los tipos de archivos tienen números mágicos, por lo que este tampoco es un sistema 100% confiable.

Ver también

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2026 Movatter.jp