首页 文章

HTTP响应头中内容处置的使用

提问于
浏览
115

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

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

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

使用内容处置响应标头还可以做些什么?

6 回答

  • 81

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

    内容处置标头的权限是RFC 1806RFC 2183.人们也设计了content-disposition hacking.重要的是要注意内容处置标头不是HTTP 1.1标准的一部分 .

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

    15.5内容处理问题RFC 1806 [35],从中派生出HTTP中经常实现的Content-Disposition(参见第19.5.1节) Headers ,有许多非常严重的安全注意事项 . Content-Disposition不是HTTP标准的一部分,但由于它已被广泛实施,我们正在记录它对实现者的使用和风险 . 有关详细信息,请参阅RFC 2183 [49](更新RFC 1806) .

  • 2

    好吧,似乎Content-Disposition标头最初是为电子邮件而不是网络创建的 . (Link to relevant RFC . )

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

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

    保存时,但我不确定 .

  • 6

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

  • 22

    对于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());
    
  • 4

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

    允许的值是在互联网号码分配机构(IANA)注册的值;他们的registry of values应被视为权威来源 .

  • 0

    认为这篇关于Microsoft支持部分的知识库文章与此处的讨论有关How to raise a file download dialog box for a known mime type

相关问题