.Net网站防盗链

时间:2022-01-30 12:42:26

一、简单写法,在Global.asax下的这个方法中添加如下信息

 1         /// <summary>
 2         /// 管道当中的第一个事件
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         protected void Application_BeginRequest(object sender, EventArgs e)
 7         {
 8             //防盗链
 9             if (Request.RawUrl.Contains("images/"))
10             {
11                 if (Request.UrlReferrer==null || !IsSameDomain(Request.UrlReferrer,Request.Url))
12                 {
13                     Response.ContentType = "image/jpeg";
14                     string path = Request.MapPath("/daplian.jpg");
15                     Response.WriteFile(path);
16                     Response.End();
17                 }
18             }
19         }
20         /// <summary>
21         /// 判断域名是否相同
22         /// </summary>
23         /// <param name="u1"></param>
24         /// <param name="u2"></param>
25         /// <returns></returns>
26         bool IsSameDomain(Uri u1,Uri u2)
27         {
28             return Uri.Compare(u1, u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCulture) == 0 ? true : false;
29         }