web-dev-qa-db-fra.com

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 leur ordinateur, puis de décider de son utilisation, au lieu que le navigateur essaie de l’utiliser.

Quelles autres choses peuvent être faites avec l'en-tête de réponse content-disposition?

115
Ronnie Overby

Notez que RFC 6266 remplace les RFC référencées ci-dessous. La section 7 décrit certaines des préoccupations liées à la sécurité.

L'autorité sur l'en-tête de disposition de contenu est RFC 1806 et RFC 2183. Des personnes ont également conçu le piratage de disposition de contenu. Il est important de noter que l'en-tête content-disposition ne fait pas partie de la norme HTTP 1.1.

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

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 de HTTP est dérivé, possède un certain nombre de
considérations de sécurité sérieuses . Content-Disposition ne fait pas partie de
le standard HTTP, mais puisque c'est largement mis en œuvre, nous sommes
documenter son utilisation et les risques pour les réalisateurs. Voir la RFC 2183 [49]
(qui met à jour RFC 1806) pour plus de détails.

81
Andrew Austin

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.

22
MiffTheFox

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

6
Manish Pai

Pour les utilisateurs asp.net, le framework .NET fournit une classe permettant de 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());
4
onof

Cet en-tête est défini dans 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 devrait être considéré comme la source définitive.

2
NickFitz

Pensons que cet article de la Base de connaissances sur la section support de Microsoft est lié à la discussion qui suit Comment faire apparaître une boîte de dialogue de téléchargement de fichier pour un type MIME connu }

0
user824910