内容处理在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类型提高文件下载对话框