2010-11-08 3 views
1

est-il nécessaire de mentionner le type de contenu dans l'en-tête http lors du téléchargement du fichier. J'ai essayé d'utiliser C#. Je l'avais mis "image/png" lors du téléchargement d'un fichier pdf et quand j'ai téléchargé le fichier téléchargé, le fichier pdf était parfait. il n'a pas été corrompu. Alors, quel est le rôle de la spécification du type de contenu dans l'en-tête http?http webrequest type de contenu null

peut-il être nul ou toute autre valeur erronée. Parce que l'application que je fais, l'utilisateur donnera juste le fichier et j'ai juste besoin de le télécharger.

toute aide hautement appréciée. Merci d'avance.

Répondre

3

Bizarre que personne n'ait répondu à cette question.

Vous devez toujours définir le type de contenu, certains logiciels (serveurs) peuvent se casser lorsqu'il est omis.

Vous pouvez lui donner une valeur que le système cible peut gérer.

Puisque vous pouvez facilement simuler une requête http, vous pouvez également fausser les en-têtes. Votre système cible (dans ce cas, un processeur de téléchargement) doit accepter uniquement les valeurs de type contenu qu'il est capable de gérer et vous DEVEZ valider si le type de contenu correspond aux données envoyées dans le corps (le fichier téléchargé lui-même). Vous ne pouvez jamais faire confiance à la valeur de type de contenu, jusqu'à ce que vous la validiez d'une manière ou d'une autre. En tant que développeur PHP, je vérifie toujours tout téléchargement de fichier par rapport à un validateur de type mime pour être sûr d'avoir obtenu ce que j'attendais. Par exemple j'utilise getimagesize() pour détecter si c'est une image ou non et si c'est pour obtenir son type de format de fichier (PNG).

Comme les fichiers PNG et PDF sont des formats de fichiers binaires, votre transfert a réussi. Ceci est dû au fait que vous l'avez codé de cette façon ou que le système cible retombe sur les paramètres par défaut ou effectue une vérification par lui-même.