.net学习图片防盗链

代码实现如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///全局处理程序
///1、新建类,实现IHttpHandler
///2、实现相应的功能
///3、配置web.config
 <httpHandlers>
      <!-- type="命名空间.类名,程序集的名字"-->
      <add verb="*"《请求类型 get post》 path="img/*.jpg" 《那个路径下的图片》 type="DaoLian"《类名》/>
    </httpHandlers>
/// </summary>
public class DaoLian:IHttpHandler
{

    public bool IsReusable
    {
        get { return false; }
    }

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/jpeg";
        //当前请求
        Uri u1 = context.Request.Url;
        //上一次请求
        Uri u2 = context.Request.UrlReferrer;

        //比较域名和端口是否一致
        if (CompareUrl(u1, u2))
        {
            //正常的请求
            string path = context.Request.RawUrl;
            path = context.Request.MapPath(path);
            context.Response.WriteFile(path);
        }
        else
        {
            //盗链的请求
            //相对路径 相对于浏览器当前请求的文件
            string path = context.Request.MapPath("daolian.jpg");
            context.Response.WriteFile(path);
        }
    }
    //比较两个uri的域名和端口是否相等
    bool CompareUrl(Uri u1, Uri u2)
    {
        return Uri.Compare(u1, u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0;
    }
}

转载于:https://www.cnblogs.com/eric-gms/p/3423559.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值