开发日志:基于IHttpHandler接口功能的防盗链应用
2009-07-24 17:19
387 查看
建立URLHandler.cs文件,代码如下
using System.Web;
namespace BaseLibrary {
public class UrlHandler : IHttpHandler {
//指明该HttpHandler的实现类是否需要缓存
public bool IsReusable {
get { return true; }
}
public UrlHandler() {
}
public void ProcessRequest(HttpContext context) {
string FileName = context.Server.MapPath(context.Request.FilePath);
if (context.Request.UrlReferrer != null) {
if (context.Request.UrlReferrer.Host == null) {
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/no.jpg"); //被替换图片
} else {
if (context.Request.UrlReferrer.Host.IndexOf("vote.yeshj.com") > -1) //这里是你的域名,如www.maticsoft.com
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
} else {
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/no.jpg");
}
}
} else{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
}
}
}
}
在网站的Web.config中的<httpHandlers></httpHandlers>节点中添加如下代码:
<httpHandlers>
<add verb="*" path="*.jpg" type="BaseLibrary.UrlHandler, BaseLibrary"/>
</httpHandlers>
配置网站的IIS
在站点的主目录=》配置=》ISAPI中
添加一个扩展名为“.jpg”;
可执行文件地址为:“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”的扩展
这样,在外展链接本周图片时,就会显示no.jpg
思考:
这样做只是做了.jpg的防盗链,如何做多种图片格式的防盗链?
using System.Web;
namespace BaseLibrary {
public class UrlHandler : IHttpHandler {
//指明该HttpHandler的实现类是否需要缓存
public bool IsReusable {
get { return true; }
}
public UrlHandler() {
}
public void ProcessRequest(HttpContext context) {
string FileName = context.Server.MapPath(context.Request.FilePath);
if (context.Request.UrlReferrer != null) {
if (context.Request.UrlReferrer.Host == null) {
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/no.jpg"); //被替换图片
} else {
if (context.Request.UrlReferrer.Host.IndexOf("vote.yeshj.com") > -1) //这里是你的域名,如www.maticsoft.com
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
} else {
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/no.jpg");
}
}
} else{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
}
}
}
}
在网站的Web.config中的<httpHandlers></httpHandlers>节点中添加如下代码:
<httpHandlers>
<add verb="*" path="*.jpg" type="BaseLibrary.UrlHandler, BaseLibrary"/>
</httpHandlers>
配置网站的IIS
在站点的主目录=》配置=》ISAPI中
添加一个扩展名为“.jpg”;
可执行文件地址为:“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”的扩展
这样,在外展链接本周图片时,就会显示no.jpg
思考:
这样做只是做了.jpg的防盗链,如何做多种图片格式的防盗链?
相关文章推荐
- Smobiler基于.NET框架开发移动应用内部系统—消息列表功能(开发日志六)
- Smobiler基于.NET框架开发移动应用内部系统—工作单功能(开发日志七)
- Smobiler基于.NET框架开发移动应用内部系统—消息列表功能(开发日志五)
- Smobiler基于.NET框架开发移动应用内部系统—周报日志等功能(开发日志四)
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- C#开发微信门户及应用(28)--微信“摇一摇·周边”功能的使用和接口的实现
- 网站应用微信登录功能接口开发指南
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-基于接口驱动的数据层
- 使用OpenCl在Android相机的预览功能中做基于CV的应用开发
- 使用 Sql 2005 中集成CLR功能开发基于C#的应用
- 基于C#开发Windows Mobile应用中短信发送功能(转)
- 手机应用在开发即时通讯项目功能时,不要使用基于socket.io的数据推送
- 基于C#开发Windows Mobile应用中短信发送功能
- Smobiler基于.NET框架开发移动应用内部系统(开发日志一)
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- 基于C#的MongoDB数据库开发应用(3)--MongoDB数据库的C#开发之异步接口
- C#开发微信门户及应用(28)--微信“摇一摇·周边”功能的使用和接口的实现
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件