• Asp.net MVC3中全局图片防盗链



    怎么样在Asp.Net MVC3中做到全局图片防盗链?如果熟悉Asp.Net的页面生命周期,相信解决这个问题应该很容易。下面就演示一下如何去做?

    一、首先是全局的,我们肯定要在Global.asax文件中动手脚。一般在一个项目中所有的图片都会放在同一个文件夹中images,也就是说我们只要在刚开始发送请求的时候获取到url。

      1、刚开始请求,就要注册事件:Application_BeginRequest

      2、如果url中包含有images/,那么就判断当前请求与上次请求的端口号及域名是否相同,如果不相同的话则认为是盗链图片。

      3、代码如下:  

         /// <summary>
           /// 开始请求的事件
            /// </summary>
            protected void Application_BeginRequest()
            {
                //判断请求的路径中是否含有images/
                if (Request.RawUrl.ToLower().Contains("images/"))
                {
                    Uri currentUrl = Request.Url;//当前的请求
                       Uri beforeUrl = Request.UrlReferrer;//上一次的请求
                       string path = Server.MapPath("../2.jpg");//盗链图片
                      if (beforeUrl != null)
                    {
                        if (IsSameDomain(currentUrl, beforeUrl))
                        {
                            //输出当前请求的图片
                            path = Server.MapPath(Request.RawUrl);
                        }
                    }
                    //输入盗链图片
                       Response.ContentType = "image/jpg";
                    Response.WriteFile(path);
                    Response.End();
                }
            }
            /// <summary>
            /// 比较两次的域名和端口号是否相同
             /// </summary>
            /// <param name="url1"></param>
            /// <param name="url2"></param>
            /// <returns></returns>
            private bool IsSameDomain(Uri url1, Uri url2)
            {
                return Uri.Compare(url1, url2, UriComponents.HostAndPort, UriFormat.SafeUnescaped,
                                StringComparison.CurrentCultureIgnoreCase) == 0;
            }

    二、同样屏蔽IP的时候也可以使用此种方法。

  • 相关阅读:
    [视频监控]用状态机图展示Layout切换关系
    初次打开mysql5.6后
    eclipse 项目乱码
    java servlet 中遇到的编码问题
    解决HttpServletResponse输出的中文乱码问题
    The first day of my Blog
    最大子段和
    LOI 54 成立一周年纪(zuo)念(si)
    水题 逆序对 NOIP 2013 火柴排队
    搜索 由浅入深 之一 水题
  • 原文地址:https://www.cnblogs.com/tianboblog/p/3255188.html
Copyright © 2020-2023  润新知