惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 新人~

有没有靠谱的论文查重网站? 潘正磊谈微软研发团队管理之道(下) 潘正磊谈微软研发团队管理之道(上) 22个所见即所得在线 Web 编辑器 重启ASP.NET应用程序 神奇的js代码,图片全都飞起来了 只允许输入数字 JavaScript技巧——js关闭窗口无提示 软件项目开发典型风险一览 通用防SQL注入漏洞程序(Global.asax方式) 删除数据库所有表数据 将Excel工作薄事件封装到COM加载项中 追MM与23种设计模式 今天愚人节,教大家一个真正的最强整人方法 字体 小 中 大 剪切上传图片源码 C#在网页中关闭重启服务 低调做人,高调做事 《老婆1.0版》答疑
asp.net 防止图片被其它网站盗链
新人~ · 2009-03-19 · via 博客园 - 新人~

      我们先分析一般的浏览现象,其中最重要的一点就是一个完整的页面并不是一次全部传送到客户端的.如果你请求的是一个带有许多图片和其它信息的页面,那么最先的一个Http请求被传送回来的是这个页面的文本,然后通过客户端的浏览器对这段文本的解释执行,发现其中还有图片,那么客户端的浏览器会再发送一条Http请求,当这个请求被处理后那么这个图片文件会被传送到客户端,然后浏览器回将图片安放到页面的正确位置,就这样一个完整的页面也许要经过发送多条Http请求才能够被完整的显示.基于这样的机制,就会产生一个问题,那就是盗链问题:就是一个网站中如果没有起页面中所说的信息,例如图片信息,那么它完全可以将这个图片的连接到别的网站.这样没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现,这样显然,对于那个被利用了资源的网站是不公平的.

那么现在利用ASP.NET中的这HttpHandler能够很好地解决这个问题,之所以能够发生这个问题.就是因为我们在默认状态下只处理那些动态的网页,asp,aspx等等,但当有请求一个图片文件时,IIS就会直接提取资源并发送给客户端,这样看来就显得有些盲目了吧

所以我们要创建自己的HttpHandler来处理图片文件。例如jpg文件。

(1)建立自己的HttpHandler

创建一个继承了System.Web.IHttpHandler接口的类,在System.Web.IHttpHandler接口只有两个成员

1 IsReusable 属性,其返回一个值代表其他http请求是否可以使用当前继承了 System.Web.IHttpHander接口的类的实例。

2 ProcessRequest(System.Web.HttpContext context) 方法,除了用户自定义中被要求处理的特殊的http请求。

其中的参数 System.Web.HttpContext 类的实例装入了一个http请求中http协议中要求的所有信息。其中System.Web.HttpContext 类中包含有属性 Request 使得从客户端发送过来的http请求信息的值可以被方便地读取;属性Response ,其中封装了需要返回给客户端的信息和操作。当然还有许多常用的属性和方法,在此就详述了,我们这里只用到这两个属性。
示例代码:

Code

(2)web应用程序中注册自定义的HttpHandler

       在 Web.config这个网络应用程序配置文件中加入注册信息
     system.web中加入:

Code

//type = "自定义handler的类的名称,网络应用程序名称"

附:示例源码下载