Menu Servidor: 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 cabeceras HTTP mandadas por una página de inicio:

HTTP/1.0 200 OK Date: Thu, 24 Jul 2003 21:20:18 GMT Server: Apache/1.3.26 (Unix) Fedoracore2 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

Tipos MIME definidos en los servidores:

System-wide defined MIME types

application/andrew-inset ez
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/mathml+xml mathml
application/msword doc
application/octet-stream bin dms lha lzh exe class so dll
application/oda oda
application/ogg ogg
application/pdf pdf
application/postscript ai eps ps
application/rdf+xml rdf
application/smil smi smil
application/srgs gram
application/srgs+xml grxml
application/vnd.mif mif
application/vnd.mozilla.xul+xml xul
application/vnd.ms-excel xls
application/vnd.ms-powerpoint ppt
application/vnd.wap.wbxml wbxml
application/vnd.wap.wmlc wmlc .wmlc
application/vnd.wap.wmlscriptc wmlsc .wmlsc
application/voicexml+xml vxml
application/x-bcpio bcpio
application/x-cdlink vcd
application/x-chess-pgn pgn
application/x-cpio cpio
application/x-csh csh
application/x-director dcr dir dxr
application/x-dvi dvi
application/x-futuresplash spl
application/x-gtar gtar
application/x-hdf hdf
application/x-httpd-php .php .php4 .php3 .phtml
application/x-httpd-php-source .phps
application/x-javascript js
application/x-koan skp skd skt skm
application/x-latex latex
application/x-netcdf nc cdf
application/x-pkcs7-crl .crl
application/x-sh sh
application/x-shar shar
application/x-shockwave-flash swf
application/x-stuffit sit
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-tar tar .tgz
application/x-tcl tcl
application/x-tex tex
application/x-texinfo texinfo texi
application/x-troff t tr roff
application/x-troff-man man
application/x-troff-me me
application/x-troff-ms ms
application/x-ustar ustar
application/x-wais-source src
application/x-x509-ca-cert .crt
application/xhtml+xml xhtml xht
application/xml xml xsl
application/xml-dtd dtd
application/xslt+xml xslt
application/zip zip
audio/basic au snd
audio/midi mid midi kar
audio/mpeg mpga mp2 mp3
audio/x-aiff aif aiff aifc
audio/x-mpegurl m3u
audio/x-pn-realaudio ram rm
audio/x-pn-realaudio-plugin rpm
audio/x-realaudio ra
audio/x-wav wav
chemical/x-pdb pdb
chemical/x-xyz xyz
image/bmp bmp
image/cgm cgm
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/png png
image/svg+xml svg
image/tiff tiff tif
image/vnd.djvu djvu djv
image/vnd.wap.wbmp wbmp .wbmp
image/x-cmu-raster ras
image/x-icon ico
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
model/iges igs iges
model/mesh msh mesh silo
model/vrml wrl vrml
text/calendar ics ifb
text/css css
text/html html htm .shtml .jsp
text/plain asc txt
text/richtext rtx
text/rtf rtf
text/sgml sgml sgm
text/tab-separated-values tsv
text/vnd.wap.wml wml .wml
text/vnd.wap.wmlscript wmls .wmls
text/x-setext etx
video/mpeg mpeg mpg mpe
video/quicktime qt mov
video/vnd.mpegurl mxu
video/x-msvideo avi
video/x-sgi-movie movie
x-conference/x-cooltalk ice