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 相关文章推荐
幻宇的层模拟窗口效果-提供演示和下载
Jan 20 Javascript
用js实现下载远程文件并保存在本地的脚本
May 06 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
Sep 06 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
JS实现页面载入时随机显示图片效果
Sep 07 Javascript
Easyui的组合框的取值与赋值
Oct 28 Javascript
AngularJS封装$http.post()实例详解
May 06 Javascript
JS库之Three.js 简易入门教程(详解之一)
Sep 13 Javascript
webpack之devtool详解
Feb 10 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
Feb 06 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 Javascript
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
为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
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
Javascript调用C#代码
2011/01/17 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
JavaScript实现点击图片换背景
2020/11/20 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
python实现RSA加密(解密)算法
2016/02/17 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python是否适合网页编程详解
2019/10/04 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Java程序员面试题
2013/07/15 面试题
体育教育专业毕业生自荐信
2013/11/15 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
工作评语大全
2014/04/26 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
十佳青年事迹材料
2014/08/21 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
政风行风整改报告
2014/11/06 职场文书
Python集合set()使用的方法详解
2022/03/18 Python