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 CSS修改学习第六章 拖拽
Feb 19 Javascript
基于MooTools的很有创意的滚动条时钟动画
Nov 14 Javascript
基于jquery实现的文字淡入淡出效果
Nov 14 Javascript
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
Ionic快速安装教程
Jun 03 Javascript
JavaScript原型继承_动力节点Java学院整理
Jun 30 Javascript
ReactNative实现图片上传功能的示例代码
Jul 11 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
angular 未登录状态拦截路由跳转的方法
Oct 09 Javascript
微信小程序使用echarts获取数据并生成折线图
Oct 16 Javascript
对layui数据表格动态cols(字段)动态变化详解
Oct 25 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
Yii2中事务的使用实例代码详解
2016/09/07 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
JsRender实用入门教程
2014/10/31 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
Highcharts入门之简介
2016/08/02 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
Vue header组件开发详解
2018/01/26 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
jQuery实现日历效果
2020/09/11 jQuery
python中的函数用法入门教程
2014/09/02 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
自我查摆剖析材料
2014/10/11 职场文书
小学教师自我评价
2015/03/04 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python
mysql的单列多值存储实例详解
2022/04/05 MySQL