HttpHandler对象实现防盗连

一、防盗链需求具体如下:

1、创建一个网站,网站下的images文件中有jpg图片资源,本网站的页面引起图片的相对路径后可以正常使用,正常显示。

2、创建第二个网站,网站下有一个页面引用了上一个网站中的jpg图片资源,结果不能正常显示图片资源,而会显示一个表示错误的图片。


二、创建站点:

1、创建新的文件夹,把自己所选的图片放入进去,也可以直接把图片放在桌面上面,然后添加一个aspx页面,插入图片,相关代码如下:(切记,图片jpg或许不一样,记得修改)

1、<img src="images/adv1.jpg">

2、<img src="images/adv2.jpg">

3、<img src="images/adv3.jpg">


2、创建盗链站点。创建第二个网站,添加aspx页面,引用第一个网站提供的三张图片,相关代码如下:

<p>上述图片来自上一个站点</p>

<img src="https://www.baidu.com/images/adv1.jpg">

<img src="https://www.baidu.com/images/adv2.jpg">

<img src="https://www.baidu.com/images/adv3.jpg">


三、防盗链操作

编写HtppHandler类:

public class PreventLink:HttpHandler{

public bool isReusable{

get{return true;}

}

public void ProcessRequest(HttpContext  context){

//获取上次请求的URL

Uri lastUri=context.Request.UrlReferrer;

//获取把本次请求的URL

Uri currentUrl=contex.Request.Url;

//判断是否为盗链

if(lastUrl.Host!=currentUrl.Host||lastUrl.Port!=currentUrl.Port){

//获取“请勿盗链”警告提示图片路径

string errorlmagePath=contex.Requesgt.PhysicalApplicationPath+"Erro/defauult.jpf";

//发送至客户

context.Response.WriteFile(errorimagePath);

}

else{

context.Response.WriteFile(context.Request.PhysicalPath);

       }

   }

}

提示:盗链的判断依据:上次请求的主机和端口与本次请求的主机和端口是否一致,若不一致,则为盗链(页面中插入的图片需要单独请求)。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容