Dois-je spécifier un type MIME si le fichier téléchargé n'a pas d'extension? En d'autres termes, existe-t-il un type MIME général par défaut?
Dois-je spécifier un type MIME si le fichier téléchargé n'a pas d'extension? En d'autres termes, existe-t-il un type MIME général par défaut?
Réponses:
Vous pouvez utiliser application/octet-stream
pour les types inconnus.
RFC 2046 stipule dans la section 4.5.1:
Le sous-type "flux d'octets" est utilisé pour indiquer qu'un corps contient des données binaires arbitraires.
application/octet-stream
fichier est exécutable. Et même si un navigateur est en cours de téléchargement en connaissance de cause d' un fichier exécutable, il ne « peut - être exécuter » sans l'utilisateur demandant; le simple téléchargement d'un exécutable n'implique pas que je veux qu'il soit exécuté maintenant. S'il existe vraiment un navigateur qui peut exécuter application/octet-stream
automatiquement les fichiers lors du téléchargement, dites-nous lequel et comment reproduire le comportement. En ce moment, je ne te crois pas.
Nous devrions utiliser RFC-7231 (HTTP / 1.1 Semantics and Content) comme référence au lieu de RFC-2046 (Media Types) car la question portait clairement sur HTTP Content-Type.
De plus, la RFC-2046 ne définit pas clairement les types inconnus, contrairement à la RFC-7231.
N'envoyez pas de type MIME pour les données inconnues.
Pour être plus clair: n'utilisez pas du tout l'en-tête Content-Type.
Protocole de transfert hypertexte RFC-7231 (HTTP / 1.1): sémantique et contenu
3.1.1.5. Type de contenuUn expéditeur qui génère un message contenant un corps de charge utile DEVRAIT
générer un champ d'en-tête Content-Type dans ce message à moins que le
type de support prévu de la représentation incluse ne soit inconnu de l'
expéditeur.
Cette section vous dit clairement de l'omettre si vous ne le savez pas avec certitude. Cela indique également que le receveur peut supposer que le type est application / octet-stream, mais le fait est que cela peut aussi être autre chose.
RFC-2046
4.5.1. Sous-type de flux d'octetsL'action recommandée pour une implémentation qui reçoit une
entité "application / octet-stream" est simplement de proposer de placer les données
dans un fichier, avec tout Content-Transfer-Encoding annulé, ou peut-être de l'
utiliser comme entrée à un utilisateur spécifié processus.
Et, comme déjà indiqué ci-dessus:
RFC-7231
3.1.1.5. Type de contenuSi un champ d'en-tête Content-Type n'est pas présent, le destinataire PEUT soit supposer un type de support de "application / octet-stream"
([RFC2046], paragraphe 4.5.1) ou examiner les données pour déterminer son type.
Si vous le définissez comme "application / octet-stream", alors vous dites que vous savez que c'est "application / octet-stream".
Si vous ne le définissez pas, vous dites que vous ne savez pas ce que c'est et laissez la décision au récepteur et le récepteur pourrait alors vérifier si cela marche comme un canard et ...
Je préfère application/unknown
, mais le résultat sera sûrement le même queapplication/octet-stream
application/octet-stream
ou application/unknown
? Il y a une raison pour laquelle ils ont inventé image/png
.