Configurar correctamente los tipos MIME del servidor

  • Enlace amigable (slug) de la revisión: Configurar_correctamente_los_tipos_MIME_del_servidor
  • Título de la revisión: Configurar correctamente los tipos MIME del servidor
  • Id de la revisión: 168728
  • Creada:
  • Creador: Markens
  • ¿Es la revisión actual? No
  • Comentario /* How to set up your server to send the correct MIME types */

Contenido de la revisión

{{wiki.template('Traducción', [ "inglés", "Properly Configuring Server MIME Types", "en" ])}}

Background

Por defecto, muchos servidores web están configurados para informar de un tipo MIME de texto/plano o aplicación/cadena de octetos para tipos de contenidos desconocidos. Así como nuevos tipos de contenidos son inventados o agregados a los servidores web, los administradores de webs pueden fallar en agregar los nuevos tipos MIME para la configuración de sus servidores web. Esta es la fuente de mayor problema para los usuarios de navegadores basados en Gecko, lo cual respecta a los tipos MIME como informados por servidores web y aplicaciones web.

Introduccion

Por defecto, muchos servidores web estan configurados para reportar un tipo MIME de texto/plano o aplicacion/de fuente de octeto para tipos desconocidos de contenido. A medida que los nuevos tipos de contenido son inventados o añadidos a los servidores web, los administradores de red pueden equivocarse al añadir los nuevos tipos de MIME a su configuracion del servidor web. Esta es la principal fuente de problemas para usuarios de navegadores basados en Gecko, el cual respeta los tipos MIME tal y como son reportados por los servidores web y las aplicaciones web.

What are MIME types?

MIME types describe the media type of content either in email or served by web servers or web applications and are intended to help guide a web browser in how the content is to be processed and displayed. Examples of MIME types are:

  • text/html for normal web pages
  • text/plain for plain text
  • application/octet-stream meaning "download this file"
  • application/x-java-applet for Java applets
  • application/pdf for Adobe® PDF documents.

¿Que son los tipos de MIME?

Los tipos de MIME describen el tipo de medio del contenido, sea del correo electronico o el utilizado en los servidores o aplicaciones web y tiene el proposito de ayudar a guiar al navegador web acerca de como ha de ser procesado y mostrado el contenido. Ejemplos de tipos de MIME son:

  • texto/html para paginas web normales
  • texto/plano para texto comun
  • Aplicacion/de fuente octeto que significa "descarga este archivo"
  • Aplicacion/x-java-applet para uso de applets de Java
  • Aplicacion/pdf para documentos de Adobe® PDF.

Información Técnica

MIME está actualmente definida en RFCs 2045, 2046, 2047, 2048, y 2049 y los valores registrados para los tipos MIME estan disponibles en IANA | MIME Media Types. La HTTP specification define un superconjunto de MIME el cual es utilizado para describir los tipos de medios usados en la red.

Por qué son importantes los tipos correctos de MIME?

Example of an incorrect MIME type result Si el servidor de red o la aplicación informan de un tipo incorrecto de MIME para el contenido, un navegador de red no tiene forma, de acuerdo a la especificación HTTP, sabiendo que el autor actualmente pensó el contenido para ser procesado y mostrado en una forma diferente que la impuesta por el tipo MIME informado.

Algún otro navegador de red, tal como el Microsoft® Internet Explorer, intenta permitir para servidores de red mal configurados y aplicaciones suponiendo que el tipo adecuado de MIME debería ser. Esto tiene protegido a muchos administradores de red de sus propios errores, desde que Internet Explorer continúa por procesar el contenido esperado aún aunque el servidor de red esté mal configurado, ejemplo: muestra una imagen la cual es informada de ser texto plano.

Por qué los navegadores no deberían suponer tipos MIME?

A parte de la violación de la especificación HTTP, es una mala estrategia para los navegadores suponer tipos MIME por las siguientes razones:

Pérdida del control

Si el navegador ignora el tipo MIME reportado, los administradores de red y autores no tendrán mas el control sobre cómo sus contenidos van a ser procesados.

Por ejemplo, un sitio de red orientado para desarrolladores de red puede enviar determinados ejemplos de documentos HTML como enteros text/html ó text/plain en orden de tener los documentos enteros procesados y motrados como HTML o como código fuente. Si el navegador supone el tipo MIME, esta opción no estará más disponible para el autor.

Seguridad

Algunos tipos de contenidos, tales como programas ejecutables, son inherentemente inseguros. Por este motivos esos tipos MIME son generalmente restringidos en términos de qué acciones un navegador de red tomará cuando den contenidos de ese tipo. Un programa ejecutable no debería ser ejecutado en una computadora de un usuario y deberían provocar que aparezca un diálogo preguntando al usuario si desea descargar un archivo.

La suposición de tipo MIME ha sido llevada a los exploits de seguridad en Internet Explorer el cual fue basado sobre un autor malicioso reportando incorrectamente de un tipo MIME de un archivo peligroso como un tipo seguro. Esto sobrepasó el diálogo de descarga normal resultando en Internet Explorer la suposición de que el contenido era un programa ejecutable y luego corriendolo en la computadora del usuario.

Cómo determinar el tipo MIME enviado a un servidor

En Firefox, cargar el archivo y usar Herramientas | Información de página. Puede también usar Rex Swain's HTTP Viewer ó Live HTTP Headers para ver los encabezados completos y contenido de cualquier archivo enviado desde un servidor de red.

De acuerdo a los estándares, una meta etiqueta que brinda el tipo MIME tal como <meta http-equiv="Content-Type" content="text/html"> debería ser ignorado si hay una Content-Type línea en el encabezado. En vez de buscar esta línea en la fuente HTML, use las técnicas anteriores para determinar el tipo MIME enviado por un servidor.

Cómo determinar el tipo correcto de MIME para su contenido

Hay ciertos pasos los cuales pueden llevar a derminar el correcto tipo de valor MIME a ser usado para su contenido.

  1. Si su contenido fue creado usando la aplicación de software del vendedor, lea la documentación del vendedor para ver qué tipos MIME debería n ser informados para los diferentes tipos de medios.
  2. Mire en el IANA | Registro de Tipos de medios MIME que contiene todos los tipos MIME registrados.
  3. Si el tipo de medio es mostrado usando un plug-in en Netscape Gecko, instale el plug-in y luego mire en Ayuda->Acerca en le Menú Plug-in para ver qué tipos MIME están asociados con el tipo de medio.
  4. Buscar la extensión del archivo en FILExt para ver qué tipos MIME están asociados con esa expresión.

Cómo configurar su servidor para enviar los tipos MIME correctos

  • Si está usando un servidor de red Apache, simplemente copie esto sample .htaccess file en el directorio que contiene los archivos que quiere enviar con los tipos correctos MIME. Si tiene un subdirectorio entero de archivos, solo ubique el archivo en el directorio principal; No necesita ubicarlo en cada subdirectorio.
  • Si usa Microsoft IIS, vea this article en Microsoft TechNet.
  • Si usa un utiliza un servidor script para generar contenido, puede generalmente agregar una línea cerca del principio de su script. Puede servir contenido otro que HTML desde Perl, PHP, ASP, ó Java — sólo cambie el tipo MIME adecuado.
    • Para Perl CGI, debería tener la línea print "Content-Type: text/html\n\n"; antes que cualquier otras líneas de salida. Si utiliza el módilo CGI, puede utilizar la línea print $cgi->header('text/html'); en lugar de, donde $cgi es su referencia para la instancia CGI.
    • Para PHP, debería tener la línea header('Content-Type: text/html'); antes que cualquier otras líneas de salida.
    • Para ASP, debería tener la línea response.ContentType = "text/html"; antes que cualquier otras líneas de salida.
    • Para un servlet Java, debería tener la línea response.setContentType("text/html"); al principio de su doGet ó doPost método, donde response es una referencia a HttpServletResponse.

Related Links

Original Document Information

  • Author: Bob Clary
  • Last Updated Date: 20 Feb 2003
{{ wiki.languages( { "en": "en/Properly_Configuring_Server_MIME_Types" } ) }}

Fuente de la revisión

<p>
</p><p>{{wiki.template('Traducción', [ "inglés", "Properly Configuring Server MIME Types", "en" ])}}
</p>
<h3 name="Background"> Background </h3>
<p>Por defecto, muchos servidores web están configurados para informar de un tipo MIME de <code>texto/plano</code> o <code>aplicación/cadena de octetos</code> para tipos de contenidos desconocidos. Así como nuevos tipos de contenidos son inventados o agregados a los servidores web, los administradores de webs pueden fallar en agregar los nuevos tipos MIME para la configuración de sus servidores web. Esta es la fuente de mayor problema para los usuarios de navegadores basados en Gecko, lo cual respecta a los tipos MIME como informados por servidores web y aplicaciones web.
</p>
<h3 name="Introduccion"> Introduccion </h3>
<p>Por defecto, muchos servidores web estan configurados para reportar un tipo MIME de <code>texto/plano</code> o <code>aplicacion/de fuente de octeto</code> para tipos desconocidos de contenido. A medida que los nuevos tipos de contenido son inventados o añadidos a los servidores web, los administradores de red pueden equivocarse al añadir los nuevos tipos de MIME a su configuracion del servidor web. Esta es la principal fuente de problemas para usuarios de navegadores basados en Gecko, el cual respeta los tipos MIME tal y como son reportados por los servidores web y las aplicaciones web.
</p>
<h3 name="What_are_MIME_types.3F"> What are MIME types? </h3>
<p><abbr>MIME</abbr> types describe the media type of content either in email or served by web servers or web applications and are intended to help guide a web browser in how the content is to be processed and displayed. Examples of MIME types are:
</p>
<ul><li> <code>text/html</code> for normal web pages
</li><li> <code>text/plain</code> for plain text
</li><li> <code>application/octet-stream</code> meaning "download this file"
</li><li> <code>application/x-java-applet</code> for Java<sup>™</sup> applets
</li><li> <code>application/pdf</code> for Adobe<sup>®</sup> PDF documents.
</li></ul>
<h3 name=".C2.BFQue_son_los_tipos_de_MIME.3F"> ¿Que son los tipos de MIME? </h3>
<p>Los tipos de <abbr>MIME</abbr> describen el tipo de medio del contenido, sea del correo electronico o el utilizado en los servidores o aplicaciones web y tiene el proposito de ayudar a guiar al navegador web acerca de como ha de ser procesado y mostrado el contenido. Ejemplos de tipos de MIME son:
</p>
<ul><li> <code>texto/html</code> para paginas web normales
</li><li> <code>texto/plano</code> para texto comun
</li><li> <code>Aplicacion/de fuente octeto</code> que significa "descarga este archivo"
</li><li> <code>Aplicacion/x-java-applet</code> para uso de applets de Java
</li><li> <code>Aplicacion/pdf</code> para documentos de Adobe<sup>®</sup> PDF.
</li></ul>
<h3 name="Informaci.C3.B3n_T.C3.A9cnica"> Información Técnica </h3>
<p>MIME está actualmente definida en RFCs <a class="external" href="http://www.isi.edu/in-notes/rfc2045.txt">2045</a>, <a class="external" href="http://www.isi.edu/in-notes/rfc2046.txt">2046</a>, <a class="external" href="http://www.isi.edu/in-notes/rfc2047.txt">2047</a>, <a class="external" href="http://www.isi.edu/in-notes/rfc2048.txt">2048</a>, y <a class="external" href="http://www.isi.edu/in-notes/rfc2049.txt">2049</a> y los valores registrados para los tipos MIME estan disponibles en <a class="external" href="http://www.iana.org/assignments/media-types/index.html">IANA | MIME Media Types</a>. La <a class="external" href="http://www.w3.org/Protocols/HTTP/1.1/spec.html">HTTP specification</a> define un superconjunto de MIME el cual es utilizado para describir los tipos de medios usados en la red.
</p>
<h3 name="Por_qu.C3.A9_son_importantes_los_tipos_correctos_de_MIME.3F"> Por qué son importantes los tipos correctos de MIME? </h3>
<p><img align="right" alt="Example of an incorrect MIME type result" src="File:es/Media_Gallery/Incorrect-mime-screen.jpg">
Si el servidor de red o la aplicación informan de un tipo incorrecto de MIME para el contenido, un navegador de red no tiene forma, <i>de acuerdo a la especificación HTTP</i>, sabiendo que el autor actualmente pensó el contenido para ser procesado y mostrado en una forma diferente que la impuesta por el tipo MIME informado.
</p><p>Algún otro navegador de red, tal como el Microsoft<sup>®</sup> Internet Explorer, intenta permitir para servidores de red mal configurados y aplicaciones <i><a class="external" href="http://support.microsoft.com/default.aspx?sd=msdn&amp;scid=kb;en-us;293336">suponiendo</a></i> que el tipo adecuado de MIME debería ser. Esto tiene protegido a muchos administradores de red de sus propios errores, desde que Internet Explorer continúa por procesar el contenido esperado aún aunque el servidor de red esté mal configurado, ejemplo: muestra una imagen la cual es informada de ser texto plano.
</p>
<h3 name="Por_qu.C3.A9_los_navegadores_no_deber.C3.ADan_suponer_tipos_MIME.3F"> Por qué los navegadores no deberían suponer tipos MIME? </h3>
<p>A parte de la violación de la especificación HTTP, es una mala estrategia para los navegadores suponer tipos MIME por las siguientes razones:
</p>
<h4 name="P.C3.A9rdida_del_control"> Pérdida del control </h4>
<p>Si el navegador ignora el tipo MIME reportado, los administradores de red y autores no tendrán mas el control sobre cómo sus contenidos van a ser procesados.
</p><p>Por ejemplo, un sitio de red orientado para desarrolladores de red puede enviar determinados ejemplos de documentos HTML como enteros <code>text/html</code> ó <code>text/plain</code> en orden de tener los documentos enteros procesados y motrados como HTML o como código fuente. Si el navegador supone el tipo MIME, esta opción no estará más disponible para el autor.
</p>
<h4 name="Seguridad"> Seguridad </h4>
<p>Algunos tipos de contenidos, tales como programas ejecutables, son inherentemente inseguros. Por este motivos esos tipos MIME son generalmente restringidos en términos de qué acciones un navegador de red tomará cuando den contenidos de ese tipo. Un programa ejecutable no debería ser ejecutado en una computadora de un usuario y deberían provocar que aparezca un diálogo <b>preguntando al usuario</b> si desea descargar un archivo.
</p><p>La suposición de tipo MIME ha sido llevada a los exploits de seguridad en Internet Explorer el cual fue basado sobre un autor malicioso reportando incorrectamente de un tipo MIME de un archivo peligroso como un tipo seguro. Esto sobrepasó el diálogo de descarga normal resultando en Internet Explorer la suposición de que el contenido era un programa ejecutable y luego corriendolo en la computadora del usuario.
</p>
<h3 name="C.C3.B3mo_determinar_el_tipo_MIME_enviado_a_un_servidor"> Cómo determinar el tipo MIME enviado a un servidor </h3>
<p>En Firefox, cargar el archivo y usar Herramientas | Información de página. Puede también usar <a class="external" href="http://www.rexswain.com/httpview.html">Rex Swain's HTTP Viewer</a> ó <a class="external" href="http://livehttpheaders.mozdev.org/">Live HTTP Headers</a> para ver los encabezados completos y contenido de cualquier archivo enviado desde un servidor de red.
</p><p>De acuerdo a los estándares, una <code>meta</code> etiqueta que brinda el tipo MIME tal como <code><span class="plain">&lt;meta http-equiv="Content-Type" content="text/html"&gt;</span></code> debería ser ignorado si hay una <code>Content-Type</code> línea en el encabezado. En vez de buscar esta línea en la fuente HTML, use las técnicas anteriores para determinar el tipo MIME enviado por un servidor.
</p>
<h3 name="C.C3.B3mo_determinar_el_tipo_correcto_de_MIME_para_su_contenido"> Cómo determinar el tipo correcto de MIME para su contenido </h3>
<p>Hay ciertos pasos los cuales pueden llevar a derminar el correcto tipo de valor MIME a ser usado para su contenido.
</p>
<ol><li> Si su contenido fue creado usando la aplicación de software del vendedor, lea la documentación del vendedor para ver qué tipos MIME debería n ser informados para los diferentes tipos de medios.
</li><li> Mire en el <a class="external" href="http://www.iana.org/assignments/media-types/index.html">IANA | Registro de Tipos de medios MIME</a> que contiene todos los tipos MIME registrados.
</li><li> Si el tipo de medio es mostrado usando un plug-in en Netscape Gecko, instale el plug-in y luego mire en Ayuda-&gt;Acerca en le Menú Plug-in para ver qué tipos MIME están asociados con el tipo de medio.
</li><li> Buscar la extensión del archivo en <a class="external" href="http://filext.com/">FILExt</a> para ver qué tipos MIME están asociados con esa expresión.
</li></ol>
<h3 name="C.C3.B3mo_configurar_su_servidor_para_enviar_los_tipos_MIME_correctos"> Cómo configurar su servidor para enviar los tipos MIME correctos </h3>
<ul><li> Si está usando un servidor de red Apache, simplemente copie esto <a href="es/Sample_.htaccess_file">sample .htaccess file</a> en el directorio que contiene los archivos que quiere enviar con los tipos correctos MIME. Si tiene un subdirectorio entero de archivos, solo ubique el archivo en el directorio principal; No necesita ubicarlo en cada subdirectorio.
</li><li> Si usa Microsoft IIS, vea <a class="external" href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/maintain/featusability/mimeiis.mspx">this article</a> en Microsoft TechNet.
</li><li> Si usa un utiliza un servidor script para generar contenido, puede generalmente agregar una línea cerca del principio de su script. Puede servir contenido otro que HTML desde Perl, PHP, ASP, ó Java — sólo cambie el tipo MIME adecuado.
<ul><li> Para Perl CGI, debería tener la línea <code>print "Content-Type: text/html\n\n";</code> antes que cualquier otras líneas de salida. Si utiliza el módilo CGI, puede utilizar la línea <code>print $cgi-&gt;header('text/html');</code> en lugar de, donde <code>$cgi</code> es su referencia para la instancia CGI.
</li><li> Para PHP, debería tener la línea <code>header('Content-Type: text/html');</code> antes que cualquier otras líneas de salida.
</li><li> Para ASP, debería tener la línea <code>response.ContentType = "text/html";</code> antes que cualquier otras líneas de salida.
</li><li> Para un servlet Java, debería tener la línea <code>response.setContentType("text/html");</code> al principio de su <code>doGet</code> ó <code>doPost</code> método, donde <code>response</code> es una referencia a <code>HttpServletResponse</code>.
</li></ul>
</li></ul>
<h3 name="Related_Links"> Related Links </h3>
<ul><li><a href="es/Tipo_MIME_incorrecto_en_archivos_CSS">Tipo MIME incorrecto en archivos CSS</a>
</li><li><a class="external" href="http://www.iana.org/assignments/media-types/index.html">IANA | MIME Media Types</a>
</li><li><a class="external" href="http://www.w3.org/Protocols/HTTP/1.1/spec.html">Hypertext Transfer Protocol — HTTP/1.0</a>
</li><li><a class="external" href="http://support.microsoft.com/default.aspx?sd=msdn&amp;scid=kb;en-us;293336">Microsoft - 293336 - INFO: WebCast: MIME Type Handling in Microsoft Internet Explorer</a>
</li><li><a class="external" href="http://msdn.microsoft.com/workshop/networking/moniker/overview/appendix_a.asp">Microsoft - Appendix A: MIME Type Detection in Internet Explorer</a>
</li><li><a class="external" href="http://www.microsoft.com/windows/ie/downloads/critical/q290108/">Microsoft - Security Update, March 29, 2001</a>
</li><li><a class="external" href="http://www.microsoft.com/windows/ie/downloads/critical/Q313675/">Microsoft - Security Update, December 13, 2001</a>
</li></ul>
<div class="originaldocinfo">
<h3 name="Original_Document_Information"> Original Document Information </h3>
<ul><li> Author: Bob Clary
</li><li> Last Updated Date: 20 Feb 2003
</li></ul>
</div>
{{ wiki.languages( { "en": "en/Properly_Configuring_Server_MIME_Types" } ) }}
Revertir a esta revisión