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 相关文章推荐
addRule在firefox下的兼容写法
Nov 30 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
Apr 26 Javascript
JavaScript转换二进制编码为ASCII码的方法
Apr 16 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
JavaScript实现跟随滚动缓冲运动广告框
Jul 15 Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
Oct 25 Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 Javascript
JavaScript this使用方法图解
Feb 04 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 Javascript
js基于canvas实现时钟组件
Feb 07 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实现过滤表单提交中html标签的方法
2014/10/17 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Python 含参构造函数实例详解
2017/05/25 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
django做form表单的数据验证过程详解
2019/07/26 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
python 如何对logging日志封装
2020/12/02 Python
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
Ejb技术面试题
2015/04/29 面试题
幼儿园教师培训制度
2014/01/16 职场文书
全神贯注教学反思
2014/02/03 职场文书
家长通知书教师评语
2014/04/17 职场文书
《开国大典》教学反思
2014/04/19 职场文书