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 相关文章推荐
jQuery Ajax之$.get()方法和$.post()方法
Oct 12 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
Dec 18 Javascript
jQuery unbind 删除绑定事件详解
May 24 Javascript
JavaScript利用fetch实现异步请求的方法实例
Jul 26 Javascript
详解react-redux插件入门
Apr 19 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
May 16 Javascript
JavaScript+H5实现微信摇一摇功能
May 23 Javascript
BootStrap模态框闪退问题实例代码详解
Dec 10 Javascript
小程序实现抽奖动画
Apr 16 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
JS实现在线ps功能详解
Jul 31 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 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
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
python二叉树的实现实例
2013/11/21 Python
Python3基础之基本数据类型概述
2014/08/13 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
利用python实现数据分析
2017/01/11 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Python模块的加载讲解
2019/01/15 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
孟佩杰观后感
2015/06/17 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
Vue3中的Refs和Ref详情
2021/11/11 Vue.js