防止盗链下载问题

转载 2007年09月29日 22:31:00

经常在网络上四处载东西,有时碰到直接拷贝一个类似http://193.100.100.56/TestWebSolution/WebApplication1/test.rar地址准备下载test.rar文件时,却被告知没有登录或者直接跳转到其他页面的情况,然后等登录后直接下载该文件。要实现上面情况,在.NET世界里是比较容易的。

1、  首先创建一个类库项目ClassLibrary1,实现如下(点这里查看):

using System;

using System.Web;    // 引用System.Web组件

 

namespace ClassLibrary1

{

    public class MyHandler : IHttpHandler

    {

        public MyHandler()

        {

        }

 

        #region IHttpHandler 成员

        public void ProcessRequest(HttpContext context)

        {

            // 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件

            HttpResponse response = context.Response;

    response.Redirect("http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx");

        }

 

        public bool IsReusable

        {

            get

            {

                // TODO:  添加 MyHandler.IsReusable getter 实现

                return true;

            }

        }

        #endregion

    }

}
 


 

2、  创建测试用的Web项目WebApplication1。在配置文件Web.config文件节点里增加如下节点:

  <httpHandlers>

               <add verb="*" path="*.rar" type="ClassLibrary1.MyHandler, ClassLibrary1" />

httpHandlers>

 

3、  在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件如下(点这里查看):

FileInfo file = new System.IO.FileInfo(@"G:/WebCenter/TestWebSolution/WebApplication1/test.rar");

// FileInfo 类在 System.IO 命名空间里

              Response.Clear();

              Response.AddHeader("Content-Disposition", "filename=" + file.Name);

              Response.AddHeader("Content-Length", file.Length.ToString());

              string fileExtension = file.Extension;

 

              // 根据文件后缀指定文件的Mime类型

              switch (fileExtension)

              {

                   case ".mp3":

                       Response.ContentType = "audio/mpeg3";

                       break;

                   case "mpeg":

                       Response.ContentType = "video/mpeg";

                       break;

                   case "jpg":

                       Response.ContentType = "image/jpeg";

                       break;

                   case "........等等":

                       Response.ContentType = "....";

                       break;

                   default:

                       Response.ContentType = "application/octet-stream";

                       break;

              }

 

              Response.WriteFile(file.FullName);

              Response.End();
 


 

 

4、  最后一步就是在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。

 

5、  在IE里输入http://193.100.100.56/TestWebSolution/WebApplication1/test.rar,会立即跳转到http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx,然后按WebForm1.aspx的“下载”按钮就可以下载test.rar了。

 

6、  当然,这里只按例子给个思路,完全可以再根据自身情况扩展。下面有几个参考的资源文章:

l         http://www.9seek.com/news/show.aspx?id=745&cid=12

l         http://www.9seek.com/news/show.aspx?id=521&cid=12

l         http://www.9seek.com/news/show.aspx?id=520&cid=12

l         http://msdn.microsoft.com/asp.net/using/building/web/default.aspx?pull=/library/en-us/dnaspp/html/URLRewriting.asp

 

相关文章推荐

深入探究Android的WebView下载网络文件的盗链问题

我们知道在Android中要使用WebView去访问网页需要如下设置:webView.setWebViewClient(new WebViewClient());否则当我们loadUrl的时候是自动调...

利用referer防止盗链下载

【这篇是在网上看到的关于referer的文章,还有些不明白,转过来大家待日后再好好研究一下】 一、首先了解下 referer 的原理  request.getHeader("referer")  在...

PHP 防止文件盗链而读入内存之后下载

防止文件盗链而读入内存之后下载给班级做作业管理系统,提供作业打包下载功能。但是因为盗链存在。。使得流量总是超出,导致网站停止。 我用的是万网的免费主机,当年活动免费申请的,免费使用两年。给了1G的空间...

php关于盗链问题

盗链,指服务提供商不提供自己的服务,而是采用一定的技术手段直接获取其他网站提供的服务给用户使用。     举一个典型的例子:我们的网站提供了一个链接,用户可以利用这个链接下载到本网站的资源,而某个软...

网站防止盗链的方法

原文地址:http://developer.51cto.com/art/201105/263526.htm 方法1:判断引用地址 这个方法是最早及最常见的方法。所谓判断引用地址,就是判...

ASP.NET图片盗链问题

1、什么是图片盗链?   让我们先分析一般的浏览现象,其中最重要的一点就是一个完整的页面并不是一次全部传送到客户端的.如果你请求的是一个带有许多图片和其它信息的页面,那么最先的一个Http请求被...

防止盗链(eg.jpg)的C#实现

  • 2014年04月29日 11:19
  • 507KB
  • 下载

Asp.net MVC防止图片盗链的实现方法,通过自定义RouteHandler来操作

本文告诉你如何在ASP.NET MVC中实现一个自定义RouteHandler来防止其他人盗链你的图片. 首先,我们来回顾一下当一个请求发往ASP.net MVC站点时的情景,IIS收到请求并将请求...

Asp.net防止盗链

今天在书上偶然看到了如何实现防盗链的问题,到网上查看了一下盗链主要是其他的一些网站引用本站图片或者下载链接。如果被引用的站比较小这样外站盗链带来的“无作用”流量就给站长带来了压力了(流量也是要钱滴)。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:防止盗链下载问题
举报原因:
原因补充:

(最多只允许输入30个字)