Mvc创建并注册防盗链

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mvc创建并注册防盗链相关的知识,希望对你有一定的参考价值。

 创建CustomHandler.JpgHandler

public class JpgHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
         try
         {
             // 获取文件服务器端物理路径
             string FileName = context.Server.MapPath(context.Request.FilePath);
             // 如果UrlReferrer为空,则显示一张默认的禁止盗链的图片
             if (context.Request.UrlReferrer.Host == null)
             {
                  context.Response.ContentType = "image/JPEG";
                  context.Response.WriteFile("/error.jpg");
             }
             else
             {
                 // 如果 UrlReferrer中不包含自己站点主机域名,则显示一张默认的禁止盗链的图片
                 if ((context.Request.UrlReferrer.Host.Contains("localhost")))
                 {
                     context.Response.ContentType = "application/pdf";
                     context.Response.WriteFile(FileName);
                 }
                 else
                 {
                     context.Response.ContentType = "image/JPEG";
                     context.Response.WriteFile("/error.jpg");
                 }
             }
         }
         catch (Exception ex)
         {
            context.Response.ContentType = "image/JPEG";
            context.Response.WriteFile("/error.jpg");
         }
     }
     public bool IsReusable
     {
         get { return true; }
     }
}

在项目中引用该编译好的dll文件,并在项目中注册该handler

  <system.webServer>
      <handlers>
        <add name="myjpghandler" path="*.jpg" verb="*" type="CustomHandler.JpgHandler, CustomHandler" />
      </handlers>
  </system.webServer>

 

以上是关于Mvc创建并注册防盗链的主要内容,如果未能解决你的问题,请参考以下文章

nginx图片防盗链

HTTP协议之防盗链与反防盗链

nginx盗链与防盗链(非常详细)

一行代码实现防盗链!

nginx 防盗链

什么是防盗链