前言 |
我们在浏览网站时,每个网站都有很多图片,这些图片一般都在服务器的某个文件夹存储的。如果该网站没有图片防盗链我们右击复制图片地址(如下图),然后在我们自己的网站上即可使用别人的图片,这样岂不是美滋滋,不用自己存储图片,用着别人的服务器。图片防盗链就是解决了这一问题。
思路 |
这个小功能其实很简单。首先我们不能直接在前端调用图片,我们可以先创建一个一般处理程序(.ashx),把我们想要调用的图片放到里面,然后前端直接调用这个一般处理程序(.ashx),这是我们就可在后台判断是否是本网站的请求,判断域名和端口是否是自己的
代码 |
一般处理程序(.ashx)
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/jpeg";
//判断是否是本网站的请求
Uri referrerUrl = context.Request.UrlReferrer;
//判断:urlReferrer的域名和端口是否是咱们自己网站的域名和端口
Uri requestUrl = context.Request.Url;
if (Uri.Compare(referrerUrl, requestUrl, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCulture)==0)
{
context.Response.WriteFile("1.jpg");
}
}
Html调用它
<img src="Handler1.ashx" />
效果
我们右击图片复制图片地址,在创建一个网页,复制到img标签中
<img src="http://localhost:64823/Handler1.ashx" />
效果
总结 |
图片防盗链主要的功能就是防止其它网站盗用你的图片,非常实用的小功能,也是在开发过程中必不可少的。
如果还有更好的办法,请大佬及时斧正我!