1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 /// <summary> 7 /// HotLinkedHandler 的摘要说明 8 ///1.后台代码 9 /// </summary> 10 public class HotLinkedHandler:IHttpHandler 11 { 12 13 public bool IsReusable 14 { 15 get { return false; } 16 } 17 18 public void ProcessRequest(HttpContext context) 19 { 20 //得到默认图片 21 string defaultImg = context.Server.MapPath("~/images/BookCovers/default.jpg"); 22 //得到图片路径 23 string bookImg = context.Request.PhysicalPath; 24 25 if (context.Request.UrlReferrer.Host == "location" && context.Request.UrlReferrer.Port == context.Request.Url.Port) 26 { 27 context.Response.WriteFile(bookImg); 28 } 29 else { 30 context.Response.WriteFile(defaultImg); 31 } 32 33 context.Response.End(); 34 } 35 }
在web.config中进行配置
1 <system.webServer> 2 <!--path:图片路径,type:指定处理程序类,verb:谓词 get post ftp等 *匹配所有,name:名称--> 3 <handlers> 4 <!--配置防盗链--> 5 <add type="HotLinkedHandler" path="images/BookCovers/*.jpg" name="hotLinked" verb="*"/> 6 </handlers> 7 </system.webServer>
//2.前台代码
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestWaterImgSecound.aspx.cs" Inherits="TestWaterImg" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 8 <title></title> 9 </head> 10 <body> 11 <form id="form1" runat="server"> 12 <div> 13 <img src="images/BookCovers/7111171144.jpg" /><img src="images/BookCovers/7113054846.jpg" /> 14 </div> 15 </form> 16 </body> 17 </html>
//3.另一个网站引用图片路径
1 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 8 <title></title> 9 </head> 10 <body> 11 <form id="form1" runat="server"> 12 <div> 13 <img src="http://localhost:22247/images/BookCovers/7111171144.jpg" /> 14 </div> 15 </form> 16 17 </body> 18 </html>