限制pdf文件由用户下载但能够由aspx或asp执行

时间:2013-01-04 09:11:35

标签: asp.net iis asp-classic

我正在寻找一个解决方案,限制.pdf文件由用户下载但可以通过aspx或asp检索,我试图将以下行添加到网站system.web标记内的web.config文件中根目录:

<httpHandlers>
    <add verb="*" path="*.pdf" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>

但是当我访问网站时发生内部服务器错误。有谁知道如何做到这一点,我在Windows 7上的IIS 7上测试它。

更新 我已成功配置:

<add name="NoPdfAllowed" verb="*" path="download/*.pdf" 
   type="System.Web.HttpForbiddenHandler" />
</handlers>

但我有一个java applet插件(一个html / asp / aspx页面),在web.config文件中添加上面的行之后无法打开pdf。是否可以启用能够加载pdf的java applet?

2 个答案:

答案 0 :(得分:1)

如何将pdf文件放在web目录之外?

创建一个名为C:\ pdf-files \的目录,并在此目录中为互联网用户提供读取权限。这样你的asp和aspx文件就可以将这些文件用于你需要的任何文件,但访问该网站的用户无法访问它们?

如果你使用像adostream或类似的功能,用户可能仍然可以下载流媒体内容......

答案 1 :(得分:0)

如果我理解你的问题,你想通过“直接”网址禁止下载pdf文件,但是允许它们通过客户端下载(java applet)。这就是如何制作圆形圆圈:)

我在我的业余爱好网站上使用这个系统来下载zip文件:

  • 将pdfs放在网站目录之外,或者不再像以前那样禁止扩展
  • 当使用java applet提供.aspx页面时,生成将包含唯一标识符和pdf文件名的唯一标记(比如说新的guid),将其存储在http缓存中(如果您使用单个框作为服务器)或db / scaleout(Web场),将此令牌标识符传递给applet,此令牌应该只有有限的生命周期
  • 创建将提供pdf文件的HttpHandler,此处理程序将(在提供pdf之前)按令牌ID检查,如果令牌存在且仍然有效,并且在提供pdf文件后将使此令牌无效
  • 如果与您的域名匹配,您也可以检查推荐人,但我不建议这样做,某些浏览器没有正确设置

这样用户仍然可以下载pdf文件,但下载链接只能运行一次,因此无法链接您的内容(至少不那么容易)。