zoukankan      html  css  js  c++  java
  • 图片防盗链实现

    项目结构如下

    代码一:

    ImageCalss

    namespace 防盗链.Handler
    {
        public class ImageClass : IHttpHandler
        {
            public bool IsReusable
            {
                get { return false; }
            }
    
            //禁止盗链的图片
            const string errImg = "/Content/Images/daolian.jpg";
            public void ProcessRequest(HttpContext context)
            {
                //获取文件服务器物理地址
                string fileName = context.Server.MapPath(context.Request.FilePath);
    
                //如果UrlReferrer为空,则显示一张默认的禁止盗链的图片
                if (context.Request.UrlReferrer == null || context.Request.Url.Host == null)
                {
                    context.Response.ContentType = "image/JPEG";
                    context.Response.WriteFile(context.Server.MapPath(errImg));
                }
                else
                {
                    if (context.Request.UrlReferrer.Host.IndexOf("www.testdao.com") > -1)
                    {
                        context.Response.ContentType = "image/JPEG";
                        context.Response.WriteFile(fileName);
                    }
                    else
                    {
                        context.Response.ContentType = "image/JPEG";
                        context.Response.WriteFile(context.Server.MapPath(errImg));
                    }
                }
            }
        }
    }

    代码二:在Web.config中的<system.web>节点下加上这句话,用来指定当请求/Content/Images/文件夹下面的图片的时候,去动态的执行“Verb”指定的另一个执行类去处理.

     <!-- HttpHandlers对请求的扩展名进行处理 -->
        <httpHandlers>
          <add  path="/Content/Images/*.jpg,*.jpeg,*.gif,*.png,*.bmp"  verb="*" type="防盗链.Handler.ImageClass,防盗链"/>
        </httpHandlers>

    测试盗链效果如下 :

    配置IIS,模拟一个上线发布的网站:如 ”http://www.testdao.com/Content/Images/tupian.jpg“, 能正常显示图片,因为是本网站。

    如图:

    如果不配置IIS,就相当于引入了”http://www.testdao.com“ 网站的图片,就会返回一个盗链图片的图片,

    如图:

    您的支持是我最大的动力,如果你觉得还可以,请您给个”推荐“!

  • 相关阅读:
    MongoDB的索引(六)
    DMZ原理与应用
    MongoDB的增、删、改、查操作(五)
    一分钟了解mongodb(转)
    mongodb-java-driver基本用法
    Mongodb相对于关系型数据库的优缺点(转)
    什么场景应该用 MongoDB(转)
    MongoDB使用场景和局限 (转)
    matlab7与win7不兼容
    sublime的使用
  • 原文地址:https://www.cnblogs.com/Kummy/p/2935088.html
Copyright © 2011-2022 走看看