ASP.NET 圖片盜鏈 處理

來源:互聯網
上載者:User

預設情況下http請求圖片等檔案IIS會直接提取資源並發送給用戶端,我們要建立自己的HttpHandler來處理圖片檔案。

如何?:

1.建立自己的HttpHandler

建立一個類(MyHttpHandler)繼承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 ,其中封裝了需要返回給用戶端的資訊和操作。當然還有許多常用的屬性和方法,在此就不詳述了,我們這裡只用到這兩個屬性。

2.web應用程式中註冊自訂的HttpHandler

       在
Web.config中加入註冊資訊

<httpHandlers><br /> <add verb="*" path="*.jpg" type = "MyHttpHandler,MyHttpHandler" /><br /></httpHandlers>

3.那麼我們看看在ProcessRequest(System.Web.HttpContext
context)
方法是如何對請求圖片檔案的http請求進行處理的。

public void ProcessRequest(HttpContext context)<br /> {<br /> //判斷是否是本地引用,如果是則返回給用戶端正確的圖片,這裡的判斷就是用到了前面所述的http請求中所記路的參考頁資訊<br /> if(context.Request.UrlReferrer.Host == "localhost"){<br /> //設定用戶端緩衝中檔案到期時間為0,即立即到期。<br /> context.Response.Expires = 0;<br /> //清空伺服器端為此會話開闢的輸出緩衝<br /> context.Response.Clear();<br /> //獲得檔案類型<br /> context.Response.ContentType = getContentType(context.Request.PhysicalPath);<br /> //將請求檔案寫入到伺服器端為此會話開闢的輸出緩衝中<br /> context.Response.WriteFile(context.Request.PhysicalPath);<br /> //將伺服器端為此會話開闢的輸出緩衝中的資訊傳送到用戶端<br /> context.Response.End();<br /> }<br /> else //如果不是本地引用,則屬於盜鏈引用,返回給用戶端錯誤的圖片<br /> {<br /> context.Response.Expires = 0;context.Response.Clear();<br /> context.Response.ContentType = "image/jpg";<br /> context.Response.WriteFile(context.Request.PhysicalApplicationPath + "error.jpg");<br /> context.Response.End();<br /> }<br /> }
5 .最後在IIS裡的預設網站的“配置”裡,在“應用程式對應”裡添加映射其中映射的可執行檔為 Framework安裝路徑\aspnet_isapi.dll",副檔名為".jpg",這樣就可以了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.