全局处理程序图片防盗链

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;

namespace WebApp
{
    public class Global : System.Web.HttpApplication
    {
        
        //protected void Application_AcquireRequestState(object sender, EventArgs e)
        //{
            
        //}

        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            //判断当前请求,是否请求的images文件夹
            //
            if (Request.RawUrl.ToLower().Contains("/images/"))
            {
                Response.ContentType = "image/jpeg";

                //判断域名是否相当
                Uri referrer = Request.UrlReferrer;
                Uri url = Request.Url;
                //盗链请求,输出放盗链图片
                if (!Compare(url, referrer))
                {
                    string path = Request.MapPath("~/images/daolian.jpg");
                    Response.WriteFile(path);
                    Response.End();
                }
            }


            
        }

        bool Compare(Uri u1, Uri u2)
        {
            return Uri.Compare(u1,u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0;
        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }


        protected void Application_Start(object sender, EventArgs e)
        {
            
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

       

        protected void Application_Error(object sender, EventArgs e)
        {
            //Context.Server.GetLastError();
        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

posted on 2013-12-14 20:34  月&&生  阅读(222)  评论(0编辑  收藏  举报