130 votes

Utilisations de la disposition du contenu dans un en-tête de réponse HTTP

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);
 

Cela permet à l'utilisateur d'enregistrer le fichier sur son ordinateur, puis de décider de son utilisation, au lieu que le navigateur tente d'utiliser le fichier.

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

87voto

Andrew Austin Points 1178

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

Le HTTP 1.1 (RFC 2616) mentionne également le niveau de sécurité possible effets secondaires de la disposition du contenu:

15.5 Content-Disposition Des Problèmes

RFC 1806 [35], à partir de laquelle la souvent mise en œuvre Content-Disposition
(voir la section 19.5.1) de l'en-tête HTTP est dérivés, a un certain nombre de très
sérieux les questions de sécurité. Content-Disposition n'est pas une partie de
la HTTP standard, mais depuis qu'il est largement mis en œuvre, nous sommes
la documentation de son utilisation et les risques pour des réalisateurs. Voir la RFC 2183 [49]
(les mises à jour de la RFC 1806) pour plus de détails.

Notez que la RFC 6266 remplace la Rfc référencé ci-dessous. La Section 7 décrit certaines des questions de sécurité connexes.

26voto

MiffTheFox Points 10537

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 la RFC pertinente .)

Je devine 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.

6voto

Manish Pai Points 41

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

6voto

onof Points 9477

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());
 

2voto

NickFitz Points 14977

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X