Em teoria, de acordo com a RFC 4329 , application/javascript
.
O motivo pelo qual deveria ser application
não tem nada a ver com o tipo ser legível ou executável. Isso ocorre porque existem mecanismos personalizados de determinação de charset estabelecidos pelo próprio idioma / tipo, e não apenas pelo charset
parâmetro genérico . Um subtipo de text
deve ser capaz de ser transcodificado por um proxy para outro charset, alterando o parâmetro charset. Isso não se aplica ao JavaScript porque:
uma. o RFC diz que os agentes do usuário devem estar analisando o BOM no script para determinar o tipo (não tenho certeza se algum navegador realmente faz isso);
b. os navegadores usam outras informações - a codificação da página de inclusão e, em alguns navegadores, o script charset
atributo - para determinar o conjunto de caracteres. Portanto, qualquer proxy que tentasse transcodificar o recurso quebraria seus usuários. (É claro que, na realidade, ninguém nunca usa proxies de transcodificação, mas essa era a intenção.)
Portanto, os bytes exatos do arquivo devem ser preservados exatamente , o que o torna um application
tipo binário e não tecnicamente baseado em caracteres text
.
Pelo mesmo motivo, application/xml
é oficialmente preferido text/xml
: o XML possui seus próprios mecanismos de sinalização de conjunto de caracteres em banda. E todo mundo ignora o application
XML também.
text/javascript
e text/xml
pode não ser a coisa certa oficial, mas há o que todos usam hoje por motivos de compatibilidade, e os motivos pelos quais eles não são a coisa certa estão praticamente falando completamente sem importância.