我发现从服务器提供文件时,以下asp.net代码非常有用:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
这样,用户可以将文件保存到计算机上,然后决定如何使用它,而不用浏览器尝试使用该文件。
内容处置响应标头可以完成哪些其他操作?
0
至0x1F
)
我发现从服务器提供文件时,以下asp.net代码非常有用:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
这样,用户可以将文件保存到计算机上,然后决定如何使用它,而不用浏览器尝试使用该文件。
内容处置响应标头可以完成哪些其他操作?
0
至0x1F
)
Answers:
请注意,RFC 6266取代了下面引用的RFC。第7节概述了一些相关的安全问题。
内容配置标头上的权限是RFC 1806和RFC2183。人们还设计了内容处理黑客。重要的是要注意content-disposition标头不是HTTP 1.1标准的一部分。
HTTP 1.1标准(RFC 2616)还提到了内容配置的可能的安全副作用:
15.5内容配置问题
RFC 1806 [35]
是HTTP中经常实现的Content-Disposition (请参阅第19.5.1节)标头,它具有许多非常
重要的安全考虑。Content-Disposition不是
HTTP标准的一部分,但是由于它已被广泛实施,因此我们正在
记录其使用情况以及对实施者的风险。有关详细信息,请参见RFC 2183 [49]
(更新了RFC 1806)。
请参阅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());
认为有关Microsoft支持部分的这篇知识库文章与此处的讨论有关,如何为已知的mime类型引发文件下载对话框