本文转载:http://www.cnblogs.com/eflylab/archive/2008/06/16/1223373.htmlhtml
有时咱们须要防止其余网站直接引用咱们系统中的图片,或下载文件连接。须要禁止盗链!在ASP.NET中能够方便的实现该功能!
作一个简单的盗链图片的示例,以下。新创建一个WebApplcation。新创建一个images文件夹,里面二张jpg图片,一张logo.jpg正常图片,一张用于提示非法盗链的图片Error.jpg图片。
页面default.aspx页面很简单。就一个图片以下web
这里使用HttpHandler来处理盗链问题
新创建一个 通常处理程序 Handler1.ashx.代码及注释以下api
该文件用于接管HTTP请求JPG格式的图片。若是是从主机localhost访问的,则容许。不然显示错误的图片!
到这里该文件尚未效果,须要在Web.config文件进行配置HttpHandler节点 以下缓存
来测试下 启动
图片正常显示。若是将访问地址改成 http://127.0.0.1:2136/Default.aspx 效果以下
但此时将该项目发布到IIS中,运行
没有出现但愿效果,这是由于经过IIS请求 并无将.JPG的格式使用.NET引擎进行解释,而是如静态页面HTML同样直接返回给了用户,这时咱们但愿用户请求.JPG时也能像.ASPX同样便可解决这个问题,打开IIS。选择该网站
右键属性
点击配置
点击添加
添加.jpg后缀的请求。交给aspnet_isapi.dll处理,这样咱们本身写的通常处理程序 Handler1.ashx就有效果了,
也许多心的朋友会问,咱们不是在web.config中写了这样一个配置的吗?为何没有做用呢。这是因为IIS对.jpg后缀的请求直接就加载图片返回了,这里并不会使用aspnet_isapi.dll处理,因此也就更加到达不了Handler1.ashx这一步,当咱们在IIS中配置后,便可实现!
根据相同的原理也能够实现 下载文件的防盗链~原理雷同~
拓展一下,使用该法还能够解决站内新闻资讯被人使用蜘蛛程序抓取的问题!
不过此法并不是没有缺点,首要的就是会下降系统的性能!这个要看我的权衡了!服务器