En teoría, de acuerdo con RFC 4329 , application/javascript
.
La razón por la que se supone que application
es no tiene nada que ver con si el tipo es legible o ejecutable. Es porque existen mecanismos personalizados de determinación de caracteres establecidos por el lenguaje / tipo en sí, en lugar de solo el charset
parámetro genérico . Un subtipo de text
debe ser capaz de ser transcodificado por un proxy a otro conjunto de caracteres, cambiando el parámetro del conjunto de caracteres. Esto no es cierto para JavaScript porque:
a. el RFC dice que los agentes de usuario deberían estar haciendo BOM-sniffing en el script para determinar el tipo (aunque no estoy seguro si algún navegador realmente hace esto);
si. los navegadores usan otra información (la codificación de la página incluida y en algunos navegadores el script charset
atributo) para determinar el conjunto de caracteres. Por lo tanto, cualquier proxy que intentara transcodificar el recurso rompería a sus usuarios. (Por supuesto, en realidad nadie usa transcodificadores de todos modos, pero esa era la intención).
Por lo tanto, los bytes exactos del archivo deben conservarse exactamente , lo que lo convierte en un application
tipo binario y no técnicamente basado en caracteres text
.
Por la misma razón, application/xml
se prefiere oficialmente sobre text/xml
: XML tiene sus propios mecanismos de señalización de juego de caracteres en banda. Y todos ignoran también el application
XML.
text/javascript
y text/xml
puede que no sea la Cosa correcta oficial, pero hay lo que todos usan hoy por razones de compatibilidad, y las razones por las que no son lo correcto prácticamente no tienen importancia.