Ich habe festgestellt, dass der folgende asp.net-Code beim Bereitstellen von Dateien aus einer Datenbank sehr nützlich ist:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
Auf diese Weise kann der Benutzer die Datei auf seinem Computer speichern und dann entscheiden, wie er verwendet werden soll, anstatt dass der Browser die Datei verwendet.
Was kann man mit dem Content-Disposition-Antwortheader noch tun?
Beachten Sie, dass RFC 6266 die unten angegebenen RFCs ersetzt. Abschnitt 7 beschreibt einige der Sicherheitsbedenken.
Die Autorität für den Content-Disposition-Header lautet RFC 1806 und RFC 2183. Die Leute haben auch Content-Disposition-Hacking entwickelt. Es ist wichtig zu beachten, dass der Content-Disposition-Header nicht Teil des HTTP 1.1-Standards ist.
Der HTTP 1.1-Standard ( RFC 2616 ) erwähnt auch die möglichen sicherheitsrelevanten Auswirkungen der Inhaltsdisposition:
15.5 Probleme mit der Inhaltsdisposition
RFC 1806 [35], von denen die häufig Content-Disposition implementiert
(siehe Abschnitt 19.5.1) Header in HTTP ist abgeleitet, hat eine Reihe von sehr
ernsthafte Sicherheitsüberlegungen . Content-Disposition ist nicht Teil von
der HTTP-Standard, aber da ist weit verbreitet sind wir
Verwendung und Risiken für .__ dokumentieren. Implementierer. Siehe RFC 2183 [49]
(der RFC 1806 aktualisiert), um weitere Informationen zu erhalten.
Es scheint, dass der Content-Disposition-Header ursprünglich für E-Mail erstellt wurde, nicht für das Web. ( Link zu relevantem RFC .)
Ich vermute, dass Webbrowser darauf reagieren können
Response.AppendHeader("content-disposition", "inline; filename=" + fileName);
beim sparen, bin mir aber nicht sicher.
Siehe RFC 6266 (Verwendung des Content-Disposition Header Felds im Hypertext Transfer Protocol (HTTP)) http://tools.ietf.org/html/rfc6266
Für asp.net-Benutzer bietet das .NET-Framework eine Klasse zum Erstellen eines Inhaltsdisposition-Headers: System.Net.Mime.ContentDisposition
Grundnutzung:
var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());
Dieser Header ist in RFC 2183 definiert, sodass Sie am besten mit dem Lesen beginnen können.
Zulässige Werte sind diejenigen, die bei der Internet Assigned Numbers Authority (IANA) registriert sind. Ihr Wertregister sollte als endgültige Quelle angesehen werden.
Ich dachte, dieser KB-Artikel über den Microsoft-Support-Abschnitt bezieht sich auf die Diskussion hier Wie wird ein Dialogfeld zum Herunterladen von Dateien für einen bekannten MIME-Typ angezeigt