web.config设置相当于htaccess Header设置Content-disposition

时间:2014-08-08 18:41:02

标签: javascript apache .htaccess iis web-config

为了在不打开服务器的情况下将PDF作为文件下载,我使用了一个很好的脚本download.js,它在Chrome中运行得非常好。但正如作者在FF中警告的那样,它会在单独的选项卡中打开下载的PDF文件 - 导致我的SPA出现导航问题。

他在Apache上说这个代码在htaccess中会修复它。我的应用程序在IIS 8上运行。如果可能的话,我更愿意在应用程序web.config中处理它。我可以在我的Web.config中放入system.webServer和/或在我的IIS中管理 - 允许共享主机提供程序。 (当然,将在下面的代码中将pdf添加到FilesMatch。)

//Easiest way to configure headers via Apache is to set Header set Content-Disposition "attachment" for files you want to be downloaded.
//So .htaccess can look like:

<FilesMatch "\.(zip|rar)$">
  Header set Content-Disposition attachment
</FilesMatch>

1 个答案:

答案 0 :(得分:0)

感谢serverfaut上发现的这个(以前不知道该网站)我能够在上面的问题中整理出一个等同于htaccess语言的出站规则。 (并且沿途学到了一些很棒的东西)我现在得到了我正在寻找的Firefox下载行为,虽然我仍然需要找出处理资源未找到错误的最佳方法 - 建议欢迎。

<system.webServer>
<rewrite>
  <outboundRules>
    <rule name="Allow pdfs to be downloaded" preCondition="Only match pdfs">
      <match serverVariable="RESPONSE_Content_Disposition" pattern="(.*)" negate="false" />
      <action type="Rewrite" value="attachment" replace="true" />
      <conditions>
        <add input="{QUERY_STRING}" pattern="^download" />
      </conditions>
    </rule>
    <preConditions>
      <preCondition name="Only match pdfs">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^application/pdf" />
      </preCondition>
    </preConditions>
  </outboundRules>
</rewrite>