Preciso especificar um tipo MIME se o arquivo carregado não tiver extensão? Em outras palavras, existe um tipo MIME geral padrão?
Preciso especificar um tipo MIME se o arquivo carregado não tiver extensão? Em outras palavras, existe um tipo MIME geral padrão?
Respostas:
Você pode usar application/octet-stream
para tipos desconhecidos.
A RFC 2046 declara na seção 4.5.1:
O subtipo "fluxo de octetos" é usado para indicar que um corpo contém dados binários arbitrários.
application/octet-stream
arquivo é executável. E mesmo que um navegador esteja baixando conscientemente um arquivo executável, ele "possivelmente não será executado" sem que o usuário solicite; apenas o download de um executável não implica que eu queira que ele seja executado agora. Se realmente houver um navegador que possa executar application/octet-stream
arquivos automaticamente no download, informe-nos quais e como reproduzir o comportamento. Agora eu não acredito em você.
Devemos usar o RFC-7231 (semântica e conteúdo HTTP / 1.1) como referência, em vez do RFC-2046 (tipos de mídia), porque a pergunta era claramente sobre o tipo de conteúdo HTTP.
Também o RFC-2046 não define claramente tipos desconhecidos, mas o RFC-7231 define.
Não envie o tipo MIME para dados desconhecidos.
Para ser mais claro: não use o cabeçalho Content-Type.
Protocolo de transferência de hipertexto RFC-7231 (HTTP / 1.1): Semântica e conteúdo
3.1.1.5. Tipo de conteúdoUm remetente que gera uma mensagem contendo um corpo de carga útil deve
gerar um campo de cabeçalho de tipo de conteúdo nessa mensagem, a menos que o
tipo de mídia pretendido da representação em anexo seja desconhecido para o
remetente.
Essa seção diz claramente para você deixar de fora se não souber ao certo. Também diz que o receptor pode assumir que o tipo é application / octet-stream, mas o fato é que também pode ser outra coisa.
RFC-2046
4.5.1. Subtipo de fluxo de octetoA ação recomendada para uma implementação que recebe uma
entidade "application / octet-stream" é simplesmente oferecer os dados
em um arquivo, com qualquer codificação de transferência de conteúdo desfeita, ou talvez
usá-los como entrada para uma especificação especificada pelo usuário processo.
E, como já mencionado acima:
RFC-7231
3.1.1.5. Tipo de conteúdoSe um campo de cabeçalho Content-Type não estiver presente, o destinatário PODE assumir um tipo de mídia de "application / octet-stream"
([RFC2046], Seção 4.5.1) ou examinar os dados para determinar seu tipo.
Se você defini-lo como "application / octet-stream", está dizendo que sabe que é "application / octet-stream".
Se você não defini-lo, estará dizendo que não sabe o que é e deixe a decisão para o destinatário e o destinatário poderá verificar se ele anda como pato e ...
Eu prefiro application/unknown
, mas o resultado será certamente o mesmo queapplication/octet-stream
application/octet-stream
ou application/unknown
? Há uma razão que eles inventaram image/png
.