Question

J'ai trouvé le code asp.net suivant très utile pour servir des fichiers à partir d'une base de données:

Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);

Ceci permet à l'utilisateur de sauvegarder le fichier sur son ordinateur, puis de décider de son utilisation, au lieu que le navigateur essaie de l'utiliser.

Que peut-on faire d'autre avec l'en-tête de réponse content-disposition?

Était-ce utile?

La solution

Notez que la RFC 6266 remplace les RFC mentionnées ci-dessous. La La section 7 décrit certains des problèmes de sécurité connexes.

L'autorité sur l'en-tête content-disposition est RFC 1806 et RFC 2183. Des personnes ont également mis au point piratage de contenu-disposition. Il est important de noter que l'en-tête de disposition de contenu ne fait pas partie du standard HTTP 1.1.

La norme HTTP 1.1 ( RFC 2616 ) mentionne également les éventuels effets secondaires sur la sécurité de disposition du contenu:

  

15.5 Problèmes liés à la disposition du contenu

     

RFC 1806 [35], à partir duquel le souvent   implémenté Content-Disposition
  (voir section 19.5.1). L’en-tête dans HTTP est   dérivé, a un certain nombre de très
  considérations de sécurité sérieuses.   Content-Disposition ne fait pas partie de
  le standard HTTP, mais comme il est   largement mis en œuvre, nous sommes
  documenter son utilisation et ses risques pour   les réalisateurs. Voir la RFC 2183 [49]
  (qui met à jour RFC 1806) pour plus de détails.

Autres conseils

Eh bien, il semble que l'en-tête Content-Disposition ait été créé à l'origine pour le courrier électronique, pas pour le Web. ( Lien vers le document RFC pertinent .)

Je suppose que les navigateurs Web peuvent répondre à

Response.AppendHeader("content-disposition", "inline; filename=" + fileName);

lors de la sauvegarde, mais je ne suis pas sûr.

Reportez-vous à la RFC 6266 (Utilisation du champ d’en-tête Content-Disposition dans le protocole HTTP (Hypertext Transfer Protocol)) http://tools.ietf.org/html/rfc6266

Pour les utilisateurs asp.net, le framework .NET fournit une classe pour créer un en-tête de disposition de contenu: System.Net.Mime.ContentDisposition

Utilisation de base:

var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());

Cet en-tête est défini dans la RFC 2183 , ce serait donc le meilleur endroit pour commencer à lire.

Les valeurs autorisées sont celles enregistrées auprès de l'IANA (Internet Assigned Numbers Authority); leur registre de valeurs doit être considéré comme la source définitive.

Je pensais que cet article de la Base de connaissances sur la section support Microsoft était lié à la discussion ci-dessous Comment faire apparaître une boîte de dialogue de téléchargement de fichier pour un type mime connu

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top