MIME type: o que é e como funciona
MIME type (hoje chamado oficialmente de tipo de mídia, ou media type) é a etiqueta que diz ao navegador qual é o formato de um arquivo recebido, escrita como tipo/subtipo, por exemplo text/html ou image/png.
Como é um MIME type e onde ele aparece?
O tipo é a categoria geral (texto, imagem, vídeo), e o subtipo é o formato específico. O servidor web envia essa etiqueta no cabeçalho de resposta Content-Type, antes do conteúdo do arquivo:
Content-Type: text/html; charset=UTF-8
| MIME type | Para que serve |
|---|---|
| text/html | páginas em HTML |
| text/css | folhas de estilo |
| text/javascript | scripts JavaScript |
| image/png, image/jpeg | imagens |
| application/json | dados estruturados em JSON |
| application/octet-stream | binário desconhecido, que o navegador costuma oferecer para baixar |
A lista oficial dos tipos registrados é mantida pela IANA, e o formato é descrito pela MDN no guia Tipos MIME.
Por que um MIME type errado quebra o site?
Os navegadores usam o MIME type, e não a extensão do arquivo, para decidir o que fazer com ele. Segundo a MDN, uma folha de estilo enviada como text/plain é ignorada pela maioria dos navegadores, e áudio e vídeo só tocam nas tags próprias se o tipo estiver certo. Quando o servidor não reconhece um arquivo, ele costuma enviá-lo como application/octet-stream, e o resultado é um download no lugar de uma página aberta. Se o tipo falta ou parece errado, o navegador pode tentar adivinhá-lo pelo conteúdo (MIME sniffing), o que tem riscos de segurança. O cabeçalho X-Content-Type-Options: nosniff pede ao navegador que não faça isso.
Como o servidor decide o MIME type?
O servidor tem uma tabela que liga cada extensão a um tipo. No Apache, ela fica no arquivo mime.types, e a documentação recomenda acrescentar tipos novos com a diretiva AddType, em vez de editar esse arquivo, que pode ser trocado em uma atualização. Ela pode ser usada no .htaccess:
AddType image/webp .webp
Para arquivos gerados por um programa, como uma página PHP, quem define o tipo é o próprio programa, e o AddType não tem efeito. No WordPress, há ainda outra camada: o envio de arquivos pela biblioteca de mídia só aceita os tipos de uma lista de permitidos, que um plugin ou o tema podem ampliar.
Como fica na PW Host?
O servidor da PW Host usa o LiteSpeed, que lê o .htaccess no formato do Apache. No painel DirectAdmin há também a tela MIME types, em Recursos avançados, com duas abas: os tipos que você criou e os do sistema, só para consulta. Para cadastrar um tipo, digite o nome no formato “grupo/tipo” e a extensão sem o ponto. Depois teste abrindo o arquivo em uma janela anônima. Um tipo errado pode impedir o arquivo de abrir, e na maioria dos sites essa tela nunca é necessária. O passo a passo está em MIME types, manipuladores Apache e módulos Perl. Para conferir o tipo que o servidor envia, você pode rodar curl -I com o endereço do arquivo e olhar a linha content-type.
