HttpHandler应用之 防止图片盗链

httpHandler 是特别类的一种,可以处理对特定类型文件的请求。实际上甚至可以通过创建自己的处理器来处理对.aspx 页面的请求,将整个页面的处理系统换掉。下面我们就用HttpHandler 来防止图片盗链。

 

代码:

using System;

using System.Web;

 

namespace HttpHandlerDemo

{

    public class JpgHandler:IHttpHandler

    {

        #region IHttpHandler 成员

 

        public bool IsReusable

        {

            get { return true; }

        }

 

        public void ProcessRequest(HttpContext context)

        {

            string fileName = context.Request.FilePath;

            if (context.Request.UrlReferrer.Host == null)

            {

                context.Response.ContentType = "image/JPEG";

                context.Response.WriteFile("/no.jpg");

            }

            else

            {

                if (context.Request.UrlReferrer.Host.IndexOf("localhost") >= 0)

                {

                    context.Response.ContentType = "image/JPEG";

                    context.Response.WriteFile(fileName);

                }

                else

                {

                    context.Response.ContentType = "image/JPEG";

                    context.Response.WriteFile("/no.jpg");

                }

            }

        }

 

        #endregion

    }

}

 
 

 

为了ASP.NET能和HttpHandler 通信,必须实现 IHttpHandler 接口的所有成员。

 

1、   ProcessRequest() 方法是处理请求并作出响应的地方。

2、  IsReusable 属性告诉 ASP.NET 是否该 HttpHandler 实例能被多个请求复用,或者它是否应每次都创建一个新的实例。通常该属性设为 true 。设为 false 的场景为,希望当某个用户的特定操作在处理器中发生时不希望下一位用户接着使用。

 

做完了上面的工作,还需要在 web.config 文件中相关部分添加该 HttpHandler 到应用程序中。

 

格式如下:

 <httpHandlers>

      <add verb="*" path="*.jpg"type="MyClass,MyDll"/>

 </httpHandlers>     
 

 

Verb 属性表明了包含的请求类型(GET、POST)可以使用通配符 “*” 表示接受所有请求。

Path 描述了请求文件的路径。

Type 指定了实现 IHttpHandler 的类,以及其所在程序集名称。这里要注意的是类名必须是完全名称,即需要包括命名空间。

 

转载于:https://www.cnblogs.com/China-Dragon/archive/2009/12/04/1617286.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值