第一步 : 实现 IHttpHandler 接口
namespace WebHotlinkProtection
{
public class HotlinkProtectionHandler:IHttpHandler
{
public bool IsReusable
{
get { throw new NotImplementedException(); }
}
public void ProcessRequest(HttpContext context)
{
//监听是否本站发起的请求
if (!context.Request.UrlReferrer.Host.StartsWith("localhost"))
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
//输出防盗链图片
context.Response.WriteFile(context.Request.PhysicalApplicationPath + "\\no.jpg");
context.Response.End();
}
else
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
context.Response.WriteFile(context.Request.PhysicalPath);
context.Response.End();
}
}
}
}
{
public class HotlinkProtectionHandler:IHttpHandler
{
public bool IsReusable
{
get { throw new NotImplementedException(); }
}
public void ProcessRequest(HttpContext context)
{
//监听是否本站发起的请求
if (!context.Request.UrlReferrer.Host.StartsWith("localhost"))
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
//输出防盗链图片
context.Response.WriteFile(context.Request.PhysicalApplicationPath + "\\no.jpg");
context.Response.End();
}
else
{
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
context.Response.WriteFile(context.Request.PhysicalPath);
context.Response.End();
}
}
}
}
第二部:配置web.config
<httpHandlers>
<add verb="*" path="*.jpg" type="WebHotlinkProtection.HotlinkProtectionHandler,WebHotlinkProtection"/>
</httpHandlers>
<add verb="*" path="*.jpg" type="WebHotlinkProtection.HotlinkProtectionHandler,WebHotlinkProtection"/>
</httpHandlers>