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 相关文章推荐
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
May 06 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
JS实现的RGB网页颜色在线取色器完整实例
Dec 21 Javascript
js获取css的各种样式并且设置他们的方法
Aug 22 Javascript
vue-cli脚手架的安装教程图解
Sep 02 Javascript
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
ajaxfileupload.js实现上传文件功能
Apr 19 Javascript
JavaScript运动原理基础知识详解
Apr 02 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开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
python实现调用其他python脚本的方法
2014/10/05 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
学python安装的软件总结
2019/10/12 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
Python3获取cookie常用三种方案
2020/10/05 Python
How TDD works
2012/09/30 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
婚礼主持结束词
2014/03/13 职场文书
小学校本培训方案
2014/06/06 职场文书
员工安全责任书范本
2014/07/24 职场文书
教师读书笔记
2015/06/29 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
浅谈python中的多态
2021/06/15 Python