图片防盗链

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



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机系统组成图表,Excel2013中的图表作用组成类型与认识(上)——想象力电脑应用...

在Excel工作表中&#xff0c;当我们查看数据的时候&#xff0c;只用表格来表示的话&#xff0c;是很难清楚的看出数据大小与数据关系的&#xff0c;当我们用图表来展示效果的时候&#xff0c;就会有更好的视频效果&#xff0c;更能展示数据的关系&#xff0c;还 可以通过图表中…

Kali Linux 下渗透测试 | 3389 批量爆破神器 | hydra | 内网渗透测试

kali linux 下渗透测试&#xff0c;3389 批量爆破神器 hydra -M target.txt rdp -L userlist.txt -P passwordlist.txt -V rootkali:~# hydra -h Hydra v8.3 (c) 2016 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal pur…

inode directory

转载于:https://blog.51cto.com/wangwx/203837

计算机系统组装 维护常用工具及其作用,《计算机系统组装维护》课程实用标准.doc...

实用文案标准《维修电工实训B》课程标准课程代码课程类别专业课程课程类型实践课程课程性质必修课程课程学分2学分课程学时40学时修读学期第1学期适用专业计算机合作开发企业执笔人费化林审核人1.课程定位与设计思路1.1课程定位《计算机组装与维护》课程对应于计算机维修员&…

Wampserver之 virtualHost

鼓捣了 一天 显示 各种 百度&#xff0c; 1。 httpd-conf: 中 最后 #Include conf/extra/httpd-vhosts.conf # 去掉 2. httpd-vhosts.conf : 照样 复制&#xff0c;改 servername 如 test.test.com DocumentRoot "d:/wamp/www/myj"       <Dire…

Flex 全屏问题

今天上午遇到FLEX全屏报错的问题&#xff1a;SecurityError: Error #2152: 不允许使用全屏模式。 上网搜了一下&#xff0c;解决了问题。参考&#xff1a;http://hi.baidu.com/fanglor/blog/item/068e7bfc3c793b84b801a07a.html 转载如下&#xff1a; MXML&…

数学三次方的计算机符号,数学符号三次方

问题转化为数学问题,小卧室的地面是长方形,把小卧室的面积转化为求长方形的面积;接着启发学生借 助学具来研究。教材提供了三种探究长方形面积的方法:一是摆一摆,数一数,用 1平方厘米的正方形把 长方形铺满,通过数出一共用了多少个小正方形,求出长方形的面积;二是摆一摆,算一算…

网速提高学习周——系统篇

主要是对网卡和协议进行配置&#xff0c;网卡的作用就是把网线传输过来的数据帧进行拆包&#xff0c;或者对发送出去的数据帧进行封装运送。网卡的设置好坏直接影响了数据处理速度&#xff0c;间接影响了上网速度。右击“网上邻居”属性——右击“本地连接”属性&#xff0c;进…

matplotlib 第二次执行报错在 django web服务中

报错内容如下&#xff1a; Exception RuntimeError: RuntimeError(main thread is not in main loop,) in <bound method PhotoImage.__del__ of < Tkinter.PhotoImage instance at 0x7f347192b5a8>> ignored 解决方法&#xff1a;最代码最顶层加&#xff1a; impo…

威斯康星大学计算机专业找工作,威斯康星麦迪逊大学计算机申请条件有哪些?...

申请威斯康星大学麦迪逊分校计算机专业需要以下条件&#xff1a;语言成绩(托福92分;雅思7.0分);需要提交GRE成绩&#xff0c;建议申请学生GPA一定要在3.0以上&#xff0c;文书材料则包括PS、CVEssay、推荐信、资产证明、毕业证学位证等。威斯康星大学麦迪逊分校计算机专业申请难…

最大努力通知方案的关键是什么

最大努力通知方案&#xff0c;在平时的生活中经常会遇到&#xff0c;他会有一定的延迟。我们都接通了支付宝或者微信支付吧&#xff1f;采用APP连接支付宝或微信支付进行操作&#xff0c;就是最大努力控制方案。 支付的流程是APP要求选择支付宝或者微信支付&#xff0c;当在微信…

DBA用于查询当前数据库表格记录条数的脚本

本文中介绍的参考脚本用于查询当前数据库中所有表格的记录条数&#xff0c;   并将结果存入TableInfo表中&#xff0c;不会删除以备用户再做处理与分析。最后请各位读者删除此表。   脚本示例&#xff1a;   if exists (select * from dbo.sysobjects where id object_i…

岳翔南京大学计算机,基于组合IIS路径抽取的组合线性混成系统有界可达性分析-中国科学.PDF...

基于组合IIS路径抽取的组合线性混成系统有界可达性分析-中国科学中国科学: 信息科学 2017 年 第47 卷 第3 期: 288–309论文基于组合 路径抽取的组合线性混成系统有界可达性分析优化1 1 1,2 1,2 1,2解定宝 周岳翔 卜磊 王林章 李宣东1. 南京大学计算机软件新技术国家重点实验室…

asp.net学习之ado.net(连接模式访问)

ado.net框架支持两种模式的数据访问&#xff1a; 连接模式&#xff08;Connected&#xff09;和非连接模式(disconnected)。这一节介绍如何使用连接模式访问数据库中的数据&#xff0c;利用ADO.NET中的Connection,Command,DataReader来获取和修改数据库中的数据 1. 连接模式的…

iphone计算机适配,适配iPhone用户!戴尔将支持iPhone投屏电脑

原标题&#xff1a;适配iPhone用户&#xff01;戴尔将支持iPhone投屏电脑一直以来&#xff0c;苹果的生态系统都非常的强大&#xff0c;但其封闭性一直是不少消费者的槽点。近日&#xff0c;著名的计算机制造商戴尔表示&#xff0c;将会在其系统预装的新版Mobile Connect软件中…