¿Tengo que especificar un tipo MIME si el archivo cargado no tiene extensión? En otras palabras, ¿hay un tipo MIME general predeterminado?
¿Tengo que especificar un tipo MIME si el archivo cargado no tiene extensión? En otras palabras, ¿hay un tipo MIME general predeterminado?
Respuestas:
Puede usar application/octet-stream
para tipos desconocidos.
RFC 2046 establece en la sección 4.5.1:
El subtipo "octeto-flujo" se usa para indicar que un cuerpo contiene datos binarios arbitrarios.
application/octet-stream
archivo es ejecutable. E incluso si un navegador está descargando a sabiendas un archivo ejecutable, no "posiblemente lo ejecute" sin que el usuario lo solicite; simplemente descargar un ejecutable no implica que quiera que se ejecute ahora. Si realmente hay un navegador que puede ejecutar application/octet-stream
archivos automáticamente al descargar, díganos cuál y cómo reproducir el comportamiento. Ahora mismo no te creo.
Deberíamos usar RFC-7231 (Semántica y contenido HTTP / 1.1) como referencia en lugar de RFC-2046 (Tipos de medios) porque la pregunta era claramente acerca del Tipo de contenido HTTP.
Además, RFC-2046 no define claramente los tipos desconocidos, pero RFC-7231 sí.
No envíe el tipo MIME para datos desconocidos.
Para ser más claro: no utilice el encabezado Content-Type en absoluto.
RFC-7231
Protocolo de transferencia de hipertexto (HTTP / 1.1): semántica y contenido
3.1.1.5. Tipo de contenidoUn remitente que genera un mensaje que contiene un cuerpo de carga DEBE
generar un campo de encabezado de tipo de contenido en ese mensaje a menos
que el
remitente desconozca el tipo de medio deseado de la representación adjunta .
Esa sección le dice claramente que lo deje de lado si no lo sabe con certeza. También dice que el receptor podría asumir que ese tipo es application / octet-stream, pero la cosa es que también podría ser otra cosa.
RFC-2046
4.5.1. Subtipo Octet-StreamLa acción recomendada para una implementación que recibe una
entidad de "aplicación / flujo de octetos" es simplemente ofrecer poner los datos
en un archivo, con cualquier codificación de transferencia de contenido deshecha, o tal vez
usarlo como entrada para un usuario especificado proceso.
Y, como ya se dijo anteriormente:
RFC-7231
3.1.1.5. Tipo de contenidoSi un campo de encabezado de tipo de contenido no está presente, el destinatario PUEDE asumir un tipo de medio de "aplicación / flujo de octetos"
([RFC2046], sección 4.5.1) o examinar los datos para determinar su tipo.
Si lo define como "aplicación / octeto-flujo", entonces está diciendo que sabe que es "aplicación / octeto-flujo".
Si no lo define, entonces está diciendo que no sabe qué es y deja la decisión al receptor y el receptor podría verificar si camina como un pato y ...
Prefiero application/unknown
, pero el resultado será seguramente el mismo queapplication/octet-stream
application/octet-stream
o application/unknown
? Hay una razón por la que inventaron image/png
.