我发现以下 asp.net 代码在为数据库中的文件提供服务时非常有用:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
这样,用户可以将文件保存到自己的计算机,然后决定如何使用它,而不是让浏览器尝试使用该文件。
使用内容处理响应头还可以做哪些事情?
好吧,看起来 Content-Disposition 头最初是为电子邮件创建的,而不是为 web 创建的
我猜网络浏览器可能会响应
Response.AppendHeader("content-disposition", "inline; filename=" + fileName);
但我不确定。
请注意,RFC 6266取代了下面引用的 RFC。
内容处理报头的权威是 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)了解详情。
15.5内容处置事宜
RFC 1806[35] 已实施的内容处置 (见第19.5.1节) HTTP 中的头是 派生,具有很多非常 严重的安全考虑。 内容-处置不属于 HTTP 标准,但因为它是 广泛推行 记录其用途和风险 参见 RFC 2183[49] (更新 RFC 1806)了解详情。
这个头是在 RFC 2183中定义的,因此这将是开始阅读的最佳位置。
允许值是那些在互联网号码分配局(IANA)注册的值,它们的 abc0应被视为确定的来源。
请参阅 RFc6266(使用超文本传输协议中的内容处置标头字段(HTTP)) https://www.rfc-editor.org/rfc/rfc6266
对于 asp.NET 用户,.NET 框架提供了一个类来创建内容处理头: 内容处置
基本用法:
var cd = new System.Net.Mime.ContentDisposition(); cd.FileName = "myFile.txt"; cd.ModificationDate = DateTime.UtcNow; cd.Size = 100; Response.AppendHeader("content-disposition", cd.ToString());