HttpHandler应用之 防止图片盗链
httpHandler 是特別類的一種,可以處理對特定類型文件的請求。實際上甚至可以通過創建自己的處理器來處理對.aspx 頁面的請求,將整個頁面的處理系統換掉。下面我們就用HttpHandler 來防止圖片盜鏈。
?
代碼:
using System;
using System.Web;
?
namespace HttpHandlerDemo
{
??? public class JpgHandler:IHttpHandler
??? {
??????? #region IHttpHandler 成員
?
??????? public bool IsReusable
??????? {
??????????? get { return true; }
??????? }
?
??????? public void ProcessRequest(HttpContext context)
??????? {
??????????? string fileName = 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("localhost") >= 0)
??????????????? {
??????????????????? context.Response.ContentType = "image/JPEG";
??????????????????? context.Response.WriteFile(fileName);
??????????????? }
??????????????? else
??????????????? {
??????????????????? context.Response.ContentType = "image/JPEG";
??????????????????? context.Response.WriteFile("/no.jpg");
??????????????? }
??????????? }
??????? }
?
??????? #endregion
??? }
}
?
?
?
為了ASP.NET能和HttpHandler 通信,必須實現 IHttpHandler 接口的所有成員。
?
1、?? ProcessRequest() 方法是處理請求并作出響應的地方。
2、? IsReusable 屬性告訴 ASP.NET 是否該 HttpHandler 實例能被多個請求復用,或者它是否應每次都創建一個新的實例。通常該屬性設為 true 。設為 false 的場景為,希望當某個用戶的特定操作在處理器中發生時不希望下一位用戶接著使用。
?
做完了上面的工作,還需要在 web.config 文件中相關部分添加該 HttpHandler 到應用程序中。
?
格式如下:
?<httpHandlers>
????? <add verb="*" path="*.jpg"type="MyClass,MyDll"/>
?</httpHandlers>?????
?
?
Verb 屬性表明了包含的請求類型(GET、POST)可以使用通配符 “*” 表示接受所有請求。
Path 描述了請求文件的路徑。
Type 指定了實現 IHttpHandler 的類,以及其所在程序集名稱。這里要注意的是類名必須是完全名稱,即需要包括命名空間。
?
轉載于:https://www.cnblogs.com/China-Dragon/archive/2009/12/04/1617286.html
總結
以上是生活随笔為你收集整理的HttpHandler应用之 防止图片盗链的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC++ 6.0 中如何使用 CRT 调
- 下一篇: ERP 我最看重什么?