图片锁定,防止连接

简介: using System;using System.Web;/// /// ImageProtect 的摘要说明/// public class ImageP...

using  System;
using  System.Web;

///   <summary>
///  ImageProtect 的摘要说明
///   </summary>
public   class  ImageProtect : IHttpHandler
{
    
public  ImageProtect()
    {
        
//
        
//  TODO: 在此处添加构造函数逻辑
        
//
    }
    
public   void  ProcessRequest(HttpContext context)
    {
        
// 判断是否是本地引用,如果是则返回给客户端正确的图片,这里的判断就是用到了前面所述的http请求中所记路的参考页信息
        
// 此处使用了端口,仅用于       
         if  (context.Request.UrlReferrer.Host  ==   " localhost " && context.Request.UrlReferrer.Port == 6999 )               
        {
            
// 设置客户端缓冲中文件过期时间为0,即立即过期。
            context.Response.Expires  =   0 ;                               
            
// 清空服务器端为此会话开辟的输出缓存
            context.Response.Clear();                                   
            
// 获得文件类型
            context.Response.ContentType  =   " image/jpeg " ;                
            
// 将请求文件写入到服务器端为此会话开辟的输出缓存中
            context.Response.WriteFile(context.Request.PhysicalPath);   
            
// 将服务器端为此会话开辟的输出缓存中的信息传送到客户端
            context.Response.End();   
        }
        
else       // 如果不是本地引用,则属于盗链引用,返回给客户端错误的图片
        {
            
// 设置客户端缓冲中文件过期时间为0,即立即过期。
            context.Response.Expires  =   0 ;                               
            
// 清空服务器端为此会话开辟的输出缓存
            context.Response.Clear();                                   
            
// 获得文件类型
            context.Response.ContentType  =   " image/jpeg " ;                
            
// 将特殊的报告错误的图片文件写入到服务器端为此会话开辟的输出缓存中
            context.Response.WriteFile( " ~/images/error.jpg " );                    
            
// 将服务器端为此会话开辟的输出缓存中的信息传送到客户端
            context.Response.End();
        }
    }
    
public   bool  IsReusable
    {
        
get
        {
            
return   false ;
        }
    }
}
 

Web.Config
< httpHandlers >
 
< add verb = " * "  path = " *.jpg "  type = " ImageProtect " />
</ httpHandlers >
 




2 .
#region  IHttpHandler 成员
    
bool  IHttpHandler.IsReusable
    {
        
get  {  return   true ; }
    }
    
void  IHttpHandler.ProcessRequest(HttpContext context)
    {
        
string  FileName  =  context.Server.MapPath(context.Request.FilePath);
        
if  (context.Request.UrlReferrer.Host  ==   null )
        {
            context.Response.ContentType 
=   " image/JPEG " ;
            context.Response.WriteFile(
" /no.jpg " );
        }
        
else
        {
            
if  (context.Request.UrlReferrer.Host.IndexOf( " mydomain.com " >   0 )
            {
                context.Response.ContentType 
=   " image/JPEG " ;
                context.Response.WriteFile(FileName);
            }
            
else
            {
                context.Response.ContentType 
=   " image/JPEG " ;
                context.Response.WriteFile(
" no/jpg " );
            }
        }
    }
    
#endregion

编译成dll。
< httpHandlers >
< add verb = " * "  path = " *.jpg "  type = " JpgHandler, MyDll "   />
</ httpHandlers >
在IIS网站配置中把JPG映射到aspnet_isapi.dll

相关文章
|
关系型数据库 MySQL 数据库
InnoDB事务和锁定信息:如何识别和解决阻塞查询问题
InnoDB事务和锁定信息:如何识别和解决阻塞查询问题
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 数据库实例只读锁定(readonly) - 硬锁定,软锁定,解锁
PostgreSQL 数据库实例只读锁定(readonly) - 硬锁定,软锁定,解锁
2571 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库锁定机制
MySQL数据库锁定机制
40 0
|
12月前
|
安全
服务器被锁定
服务器被锁定
178 0
|
数据安全/隐私保护 iOS开发
iOS逆向小技能:解锁无密码的设备、判断设备是否锁定、锁定设备、打开某个程序
介绍lua 函数: runApp、closeApp、getScreenSize、getDeviceID、lua_exit、isFrontApp。
247 0
|
PHP 数据安全/隐私保护 Web App开发
会话控制
会话控制指网站可以跟踪客户端与服务器之间的交互。 由于HTTP是一个无状态的协议,此协议无法来维护两个事务之间的联系 所谓无状态,指的是不会维护http请求数据,http请求是独立的,不持久的HTTP无法告诉我们这两个请求是来自同一个人。比如 登录跳到留言板等 所以需要使用会话控制。
1723 0
|
定位技术
定位锁定方法
定位锁定方法
227 0
定位锁定方法
锁定表格的另一种方法。
function SuoDing() { var rows = document.getElementById("txtRow"); var cols = document.getElementById("txtCol"); Show("DG",rows.value,cols.value); } 锁定的行数:。
721 0