Saltar al contenido

Tipos MIME

Las extensiones multipropósito de correo de Internet, conocidas como tipo MIME, son una especificación que amplía el formato del correo electrónico y es utilizada por los navegadores y servidores para identificar el tipo de contenido que se está transfiriendo. La especificación está estandarizada en el IETF RFC 6838. Un tipo MIME es una cadena de identificador, no una extensión de archivo. Los navegadores generalmente utilizan el tipo MIME (y no la extensión del archivo) para determinar cómo procesar un documento; por eso es importante configurar correctamente los servidores para adjuntar el tipo MIME adecuado al encabezado de respuesta. Si no se configura correctamente, los navegadores pueden interpretar mal el contenido de los archivos y los sitios no funcionarán correctamente. Los archivos descargados también pueden manejarse incorrectamente.

Sintaxis

Tipos MIME

text
Type/Subtype

La estructura de un tipo MIME consta de un tipo y un subtipo, separados por una barra (/), sin espacios. Los tipos MIME no distinguen entre mayúsculas y minúsculas, pero comúnmente se escriben en minúsculas.

Un tipo MIME debe tener siempre tanto un tipo como un subtipo. Cada tipo tiene su conjunto de subtipos posibles.

Para proporcionar detalles adicionales, puedes usar un parámetro opcional.

Tipos MIME

text
type/subtype;parameter=value

Los tipos MIME se dividen en dos categorías: discretos y multiparte. Cada uno tiene subtipos específicos.

Tipos Discretos

Tipos MIME

text
text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream

Los tipos discretos indican la categoría del documento. Pueden ser uno de los siguientes:

TipoDescripciónEjemplo de subtipos típicos
applicationContiene datos binariosapplication/javascript, application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf
audioArchivo de audioaudio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
fontDatos de fuente/tipo de letrafont/woff, font/ttf y font/otf
modelDatos de modelo para objetos 3Dmodel/3mf, model/vrml
textDocumento de textotext/plain, text/html, text/css, text/javascript
videoArchivo de videovideo/webm, video/ogg

Para describir un documento de texto que no pertenece a un subtipo en particular, se utiliza text/plain. Los documentos que contienen datos binarios sin un subtipo específico se describen mediante application/octet-stream.

Tipos Multiparte

Tipos MIME

text
multipart/form-data
multipart/byteranges

Los tipos multiparte indican documentos que constan de varias partes, cada una de las cuales puede tener un tipo MIME diferente.

TipoDescripciónEjemplo de subtipos típicos
messageMensaje que cubre otros mensajesmessage/rfc822, message/partial
multipartDatos compuestos por múltiples componentesmultipart/form-data, multipart/byteranges

Tipos MIME Comunes

La siguiente tabla enumera los tipos MIME modernos y más utilizados. Muchos tipos heredados con el prefijo x- (por ejemplo, image/x-icon) están obsoletos y deben evitarse en nuevos proyectos. Para una lista completa y oficial, consulta el registro de tipos de medios de IANA.

Extensión de archivoTipo de medio
.html, .htmtext/html
.csstext/css
.jsapplication/javascript
.jsonapplication/json
.pngimage/png
.jpg, .jpegimage/jpeg
.gifimage/gif
.svgimage/svg+xml
.mp3audio/mpeg
.mp4video/mp4
.pdfapplication/pdf
.zipapplication/zip

Configuración de encabezados Content-Type

Los servidores deben enviar el encabezado Content-Type correcto para que los navegadores sepan cómo manejar la respuesta. A continuación, se muestran ejemplos rápidos para entornos comunes:

Nginx

nginx
location /api/data {
    default_type application/json;
    add_header Content-Type application/json;
}

Apache (.htaccess)

apache
AddType application/json .json
AddType text/css .css

Node.js (Express)

javascript
app.get('/api/status', (req, res) => {
    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify({ status: 'ok' }));
});

Práctica

¿Qué son los tipos MIME y cuál es su función?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.