我发现以下 asp.net 代码在从数据库提供文件时非常有用:

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

这允许用户将文件保存到他们的计算机,然后决定如何使用它,而不是浏览器尝试使用该文件。

使用内容处置响应标头还可以做哪些其他事情?

有帮助吗?

解决方案

请注意, RFC 6266 取代了下面引用的RFC。 第7节概述了一些相关的安全问题。

内容处置标题的权限是 RFC 1806 RFC 2183. 人们还设计了内容处理黑客。重要的是要注意内容处置标头不是HTTP 1.1标准的一部分。

HTTP 1.1标准( RFC 2616 )也提到了可能的安全副作用内容处理:

  

15.5内容处理问题

     RFC 1806 [35],经常来自   实现了Content-Disposition
  (见第19.5.1节)HTTP中的标题是   派生,有很多非常的   严重的安全考虑。   内容处置不是
的一部分   HTTP标准,但因为它   广泛实施,我们是
  记录其使用和风险   实现者。参见RFC 2183 [49]
  (有关详细信息,请更新RFC 1806)。

其他提示

好吧,似乎Content-Disposition标头最初是为电子邮件而不是网络创建的。 (链接到相关RFC 。)

我猜测网页浏览器可能会响应

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

保存时,但我不确定。

请参阅 RFC 6266(超文本传输​​协议 (HTTP) 中内容处置标头字段的使用) http://tools.ietf.org/html/rfc6266

对于asp.net用户,.NET框架提供了一个用于创建内容处置标头的类: System.Net.Mime.ContentDisposition

基本用法:

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

此标头在 RFC 2183 中定义,因此这将是最佳位置开始阅读。

允许的值是在互联网号码分配机构(IANA)注册的值;他们的价值登记应被视为最终来源。

认为这篇关于Microsoft支持部分的知识库文章与此处的讨论有关如何为已知的mime类型引发文件下载对话框

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top