asp.net 图片防盗链

来源:互联网 发布:为何选择软件测试 编辑:程序博客网 时间:2024/04/29 06:31

防盗链有一些方法,但是最根本的方法还是判断请求的主机是否本服务器,如果是从别的IP地址过来的请求,则发给其一个错误提示,步骤如下:1.建立Handler,在Handler中判断客户端请求的主机的IP地址,然后根据地址判断向其发送正常图片还是盗链提示2.在web,config中添加节点,设置所有对于.jpg格式(当然还可以是其他格式),都转到这个Handler中,而不是直接请求图片。首先是Handler代码

 if (context.Request.UrlReferrer.Host == "localhost")            {                //设置客户端缓冲时间过期时间为0,即立即过期                context.Response.Expires = 0;                //清空服务器端为此会话开启的输出缓存                context.Response.Clear();                //设置输出文件类型                context.Response.ContentType = "image/jpg";                //将请求文件写入到输出缓存中                context.Response.WriteFile(context.Request.PhysicalPath);                //将输出缓存中的信息传送到客户端                context.Response.End();            }            //如果不是本地引用,则是盗链本站图片            else            {                //设置客户端缓冲时间过期时间为0,即立即过期                context.Response.Expires = 0;                //清空服务器端为此会话开启的输出缓存                context.Response.Clear();                //设置输出文件类型                context.Response.ContentType = "image/jpg";                //将请求文件写入到输出缓存中                context.Response.WriteFile(context.Request.PhysicalApplicationPath + "images/error.jpg");                //将输出缓存中的信息传送到客户端                context.Response.End();            }


 

下面是web.config的配置 

<system.web>        <compilation debug="true" targetFramework="4.0" />      <httpHandlers>        <add verb="*" path="*.jpg" type="WebApplication2.Handler1,WebApplication2"/>      </httpHandlers>    </system.web>


 

注释很清楚,不多解释。但是上面的方法只适合于测试,真正发布到IIS上,还需要对IIS进行配置,不多说了,自己去搜吧。