内容处理在HTTP响应头中的使用

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

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

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

内容处置响应头可以做些什么?

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

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

15.5内容处置问题

RFC 1806 [35],从中经常实施的内容处置
(见第19.5.1节)HTTP中的头部是派生的,具有一些非常的
严重的安全考虑。 内容处置不属于
HTTP标准,但是由于它被广泛实施,我们是
记录其对使用者的使用和风险。 请参阅RFC 2183 [49]
(更新RFC 1806)的细节。

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

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

我猜Web浏览器可能会回应

 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类型提高文件下载对话框