Tutoriales Varios

Que son los MIME TYPES

MIME es un acrónimo de extensiones multipropósito de correo de internet (Multipurpose Internet Mail Extensions)

Se trata de un standard que especifica como debe un programa (inicialmente un programa de correo o un navegador web) trasferir archivos multimedia (video, sonido, por extensión cualquier archivo que no esté codificado en US-ASCII). Con anterioridad al desarrollo de las extensiones MIME, cualquier archivo que no se limitase a texto ascii debía ser codificado a estos caracteres (uuencode uudecode).

MIME adjunta un archivo de cabecera a cada archivo, especificando el tipo y el subtipo del contenido del archivo principal. Gracias a esta información tanto el servidor como el navegador pueden manejar y presentar correctamente los datos.

La importancia de los MIME TYPES

En el uso diario de internet estamos beneficiandonos (y a veces sufriendo) los MIME TYPES. Cada vez que solicitamos una página de internet se abre un diálogo entre nuestro navegador y el server. Nuestro navegador pide la página. El servidor, antes de enviarla, nos confirma que ese recurso existe, y el tipo de datos que contiene. Esto último, mediante referencia al tipo MIME al que corresponde. Este diálogo, oculto al usuario, es parte de las cabeceras HTTP, protocolo que se sigue en la web.

Por ejemplo, estas son las cabeceras HTTP mandadas por la página de inicio de ignside.net:

HTTP/1.0 200 OK
Date: Thu, 24 Jul 2003 21:20:18 GMT
Server: Apache/1.3.26 (Unix) Debian GNU/Linux mod_gzip/1.3.19.1a PHP/4.2.3 v2h/1.5.1
X-Powered-By: PHP/4.2.3
Set-Cookie: lang=spanish; expires=Fri, 23-Jul-04 21:20:18 GMT
Content-Type: text/html
Age: 1

La primera línea especifica que está en uso el protocolo HTTP 1.0, y que la respuesta del servidor a la página solicitada es correcta. Las siguientes lineas se refieren a la identidad del server y a una cookie. A continuación en negrita el server avisa del tipo mime de la página: text/html. Con esta información, el navegador sabe como debe presentar los datos que recibe.

En la edición web la indicación de los MIME TYPES puede o debe hacerse en tres lugares diferentes: en el propio servidor, que debe ser capaz de manejar el tipo MIME concreto (y indicar al navegador el tipo de datos que envia); en la propia página web, y en el navegador del usuario

  • El servidor debe estar capacitado para manejar diversos mime types, y estar ademas habilitado para ello. Por ejemplo en un servidor Apache podemos especificar el tipo MIME por defecto para aquellos archivos que el server no pueda identificar automaticamente como pertenecientes a un tipo concreto:
    DefaultType text/plain
  • El autor de la página web referencia tipos MIME constantemente: El link a un archivo externo (una hoja de estilo, un script javascript) puede (recomendado) especificar el tipo:
    <link rel="stylesheet" href="mi_hoja_de_estilo.css" type="text/css">
    <script language="JavaScript" type="text/javascript" src="scripts/mijavascript.js">

    El tipo MIME puede especificarse como atributo en otras etiquetas HTML, como object o form (atributo enctype).
    Y por supuesto, con las etiquetas<meta HTTP-EQUIV:... podemos hacer que la página participe en el diálogo server-cliente, especificando datos MIME

  • Por ultimo el navegador del cliente tambien participa; no solamente ha de estar capacitado para interpretar el concreto MIME type que el server le envia, tambien puede, en el dialogo previo al envio de datos, informar que MIME types puede aceptar: la cabecera http_accept

Para finalizar, y como curiosidad, esta es la cabecera http_accept de tu navegador:

*/*
NOTA: */* significa que el navegador aceptará cualquier MIME type
NOTA 2: Por razones que ignoro, si usas internet explorer verás en la linea superior los mime type de tu navegador solo la primera vez que cargues la página. Si la recargas, solo aparecerá */*.