asp.net HttpHandler实现图片防盗链


Posted in Javascript onNovember 09, 2009

Step.1:创建文件 CustomHandler.cs,代码如下:

using System; 
using System.Web; namespace CustomHandler{ 
public class JpgHandler : IHttpHandler{ 
public void ProcessRequest(HttpContext context){ 
// 获取文件服务器端物理路径 
string FileName = context.Server.MapPath(context.Request.FilePath); 
// 如果UrlReferrer为空,则显示一张默认的禁止盗链的图片 
if (context.Request.UrlReferrer.Host == null){ 
context.Response.ContentType = "image/JPEG"; 
context.Response.WriteFile("/error.jpg"); 
}else{ 
// 如果 UrlReferrer中不包含自己站点主机域名,则显示一张默认的禁止盗链的图片 
if (context.Request.UrlReferrer.Host.IndexOf("yourdomain.com") > 0){ 
context.Response.ContentType = "image/JPEG"; 
context.Response.WriteFile(FileName); 
}else{ 
context.Response.ContentType = "image/JPEG"; 
context.Response.WriteFile("/error.jpg"); 
} 
} 
} 
public bool IsReusable{ 
get{ return true; } 
} 
} 
}

Step.2 编译这个文件
csc /t:library /r:System.Web.dll CustomHandler.cs

Step.3 将编译好的 CustomHandler.dll 拷贝到站点的 Bin 目录下。
Step.4 在Web.Config 中注册这个Handler。
<system.web> 
<httpHandlers> 
<add path="*.jpg" verb="*" type="CustomHandler.JpgHandler, CustomHandler" /> 
</httpHandlers> 
</system.web>

OK,诸位可以按步骤自行测试一下,这里就不赘述了。
Javascript 相关文章推荐
使一个函数作为另外一个函数的参数来运行的javascript代码
Aug 13 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
Mar 01 Javascript
js获取select标签选中值的两种方式
Jan 09 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
Jun 19 Javascript
深入浅析knockout源码分析之订阅
Jul 12 Javascript
js改变html的原有内容实现方法
Oct 05 Javascript
javascript中Number的方法小结
Nov 21 Javascript
jQuery内存泄露解决办法
Dec 13 Javascript
详解原生js实现offset方法
Jun 15 Javascript
详解a++和++a的区别
Aug 30 Javascript
react-native中ListView组件点击跳转的方法示例
Sep 30 Javascript
js回到页面指定位置的三种方式
Dec 17 Javascript
为javascript添加String.Format方法
Aug 11 #Javascript
prototype 中文参数乱码解决方案
Nov 09 #Javascript
jQuery 常见学习网站与参考书
Nov 09 #Javascript
Javascript select下拉框操作常用方法
Nov 09 #Javascript
页面中js执行顺序
Nov 09 #Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 #Javascript
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 #Javascript
You might like
使用php来实现网络服务
2009/09/15 PHP
基于initPHP的框架介绍
2013/04/18 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
Python模块WSGI使用详解
2018/02/02 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
python 实现矩阵填充0的例子
2019/11/29 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
一些高难度的SQL面试题
2016/11/29 面试题
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
爱情保证书范文
2014/02/01 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
校园运动会广播稿
2014/10/06 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle