¿Cuál es la diferencia de ContentType y MimeType?

4 minutos de lectura

avatar de usuario
Frangossauro

Hasta donde yo sé, son absolutamente iguales. Sin embargo, al navegar por algunos documentos de Django, encontré este fragmento de código:

HttpResponse.__init__(content="", mimetype=None, status=200, content_type="text/html")

lo cual me sorprende que los dos se lleven bien. Los documentos oficiales pudieron resolver el problema de manera práctica:

content_type es un alias para mimetype. Históricamente, este parámetro solo se llamaba mimetype, pero dado que este es realmente el valor incluido en el encabezado HTTP Content-Type, también puede incluir la codificación del conjunto de caracteres, lo que lo convierte en algo más que una especificación de tipo MIME. Si se especifica mimetype (no None), se usa ese valor. De lo contrario, se utiliza content_type. Si no se proporciona ninguno, se utiliza la configuración DEFAULT_CONTENT_TYPE.

Sin embargo, no lo encuentro lo suficientemente esclarecedor. ¿Por qué usamos 2 nombres diferentes para (casi lo mismo) algo? ¿Es “Content-Type” solo un nombre utilizado en las solicitudes del navegador y con muy poco uso fuera de él?

¿Cuál es la principal diferencia entre cada uno y cuándo es correcto llamar a algo? mimetype Opuesto a content-type ? ¿Estoy siendo lástima y nazi de la gramática?

avatar de usuario
Reggie Carey

Siempre he visto contentType como un superconjunto de mimeType. La única diferencia es la codificación del juego de caracteres opcional. Si contentType no incluye una codificación de juego de caracteres opcional, entonces es idéntico a mimeType. De lo contrario, mimeType son los datos anteriores a la secuencia de codificación del juego de caracteres.

P.EJ text/html; charset=UTF-8

text/html es el mimeType
; es el indicador de parámetros adicionales
charset=UTF-8 es el parámetro de codificación del conjunto de caracteres

P.EJ application/msword

application/msword es el mimeType
No puede tener una codificación de conjunto de caracteres, ya que describe un bien formado octet-stream no comprende caracteres directamente.

  • Esta es la respuesta correcta. Establecer la respuesta mime_type (no content_type) no anula el conjunto de caracteres y permanece como UTF-8.

    – Mikko Ohtamaa

    06/02/2014 a las 14:30

  • A veces llamado simplemente “tipo de medio”, el tipo MIME es como usted dice el tipo de medio. En ciertas especificaciones, veremos el término “tipo MIME analizable”, que incluye el uso de las propiedades en el Content-Type encabezamiento. Sintaxis de Content-Type se puede encontrar aquí: tools.ietf.org/html/rfc2045#section-5.1

    – vhs

    13 de mayo de 2017 a las 6:55

  • Sin embargo, en mi opinión, mime-type es un término muy limitado que se limita al correo, mientras que content-type es un término en inglés simple para “el tipo de contenido”. Entonces, en mi opinión text/html también es un tipo de contenido, incluso si la gente tiende a llamarlo MIME. Además, el nombre más nuevo, media-type, es aún más confuso, ya que los medios son 100 cosas diferentes. ¡BBC es un medio de comunicación! ¡Un DVD es un medio! Y uno diría que un flujo de datos no es un “medio”, sino un “medio”.

    – usuario2173353

    20 de febrero de 2020 a las 9:59

¿Por qué usamos 2 nombres diferentes para (casi lo mismo) algo? ¿Es “Content-Type” solo un nombre utilizado en las solicitudes del navegador y con muy poco uso fuera de él?

¿Cuál es la principal diferencia entre cada uno y cuándo es correcto llamar a algo mimetype en lugar de content-type? ¿Estoy siendo lástima y gramática nazi?

La razón no es solo la compatibilidad con versiones anteriores, y me temo que la documentación generalmente excelente de Django es un poco ondulada al respecto. MÍMICA (realmente vale la pena leer al menos la entrada de Wikipedia) tiene su origen en la extensión del correo de Internet, y específicamente SMTP. A partir de ahí, el diseño de extensión inspirado en MIME y MIME se abrió paso en muchos otros protocolos (como HTTP aquí) y todavía se usa cuando es necesario transmitir nuevos tipos de metadatos o datos en un protocolo existente. Hay docenas de RFC que analizan el uso de MIME para una gran cantidad de propósitos.

Específicamente, Content-Type: es uno entre varios encabezados MIME. De hecho, “Mimetype” suena obsoleto, pero una referencia a MIME en sí no lo es. Llame a esa parte compatibilidad con versiones anteriores, si quiere.

[BTW, this is purely a terminology problem which has nothing whatsoever to do with grammar. Filing every usage question under “grammar” is a pet peeve of mine. Grrrr.]

Si quieres saber los detalles ver ticket 3526.

Cotizar:

Se agregó content_type como un alias para mimetype al constructor HttpResponse. Es un nombre un poco más preciso. Basado en un parche de Simon Willison. Totalmente compatible con versiones anteriores.

¿Por qué usamos 2 nombres diferentes para (casi lo mismo) algo?

Compatibilidad con versiones anteriores, según su cita de la documentación.

¿Ha sido útil esta solución?